Completed the contract
Updated tests to fail properly on preconditions
Fixes and preparing for prefetch
Added prefetch functionality and tests