restructure code to isolate the environment and make the project easier to work on