implemented all todos :D