added comments, 3 TODO left