refactoring some silly design decisions