Inverting the order which defer is unrolled
Moving tests into a separate directory
Improving support for multiple value return