templated out for sah usability