by a template argument rather than its own method. By default, this object will use the projection_hash.