I have reworked it with generics; I didn't need helpers, pushed. 

I am not sure what you mean by live with `return this`.