some more explanation in some comments