#17 Refactor