put in a lot more comments