#17 refactor. starting.