#17 refactor is finished