type-safe priming - generalized