#15 splitting logic in seperate classes