add a lot of comments - still not done