Supersedes PR #224, passing all tests

This includes the commits from #224, and an extra ducktyping check to call the right method on image objects.