the ds_type is just there for test-compatibility with error messages (check the raise stmts).  I kind of hate VM-enforced privacy, but off the top of my head I don't see a reason to make it public... once you see how they work, you can really make either of the helpers do any kind of DS you like. I just wanted to clarify that the helpers really just supply defaults, and make clearer what those defaults are.