Reorganise specs; Implement short-circuit boolean evaluation

This looks like a duplicate of the spec at line 9