Made a lot of stuff on prototype1
Added initial prototype2 implementation