Ugly commit because I'm in the middle of restructuring the initial prototype :-)