v2

Re-worked the implementation based on discussions with @tnm and experiments on the `method-test` branch.

/cc @tnm