restructure into more of a modular setup