Fixed compile errors
Added specs, implemented OptimisticUnchoke, refactored a lot of stuf