Refactor complete, comments needed?