Initial commit of bunch of stuff

Needs refactoring, so fuck-yeah TDD.