Nice! The explicit `tmp` parameters you have added in are much safer, I think.  

I think this means its safe to remove the `T tmp()` method from your new Vector interface, right?  Feel free to keep it if I'm missing something or you've got other plans for it ...