went through code review, fix changes later