Finished initial implementation

zOMG too many things to document