hard to understand all this