Added comments, need to add tests