Use explicit rather than implicit returns
Slightly hacky support for yield
Use yield