add lots of comments and todos