Require

Take a look and see what you think. I know its pretty radically different than what you were doing before but I think it'll help us keep a good clean structure as the codebase grows.