WIP: of_type impl

closes #7316
I've chosen the names poorly, I'll think of something better before this gets in.