Changed a couple method names to be more clear, added a lot of comments