before I start to comment on a lot of things to explain code