introduce result object & detect. means we can lose the odd [d, …] syntax for nesting
0.1.0