add generator classes
rvalue reference experimentation