Completed 3 of 4 features + refactor