cleaner code.
insist on const-ness for the templates
don't preallocate as it makes the code messier and doesnt result in runtime improvements (looks like the compiler is taking care of the 'optimizations' i make)