concept-based "overloading" for transform