Store a reference to the external model, not an explicity copy
Compute gradient only after position has been updated, unify variable naming to camel case convention.
sample() returns acceptance statistic (exact statistic will depend on algorithm).