restructure to fix require path problems