initial #2, lots of new files!
sliced main.js up into files