still dirty working on seperation of concerns