This arity doesn't look correct.
Force lazy operation
Nicer contracts
Clean up some tests