TODO list and some comments here and there and some error handling