Split out typeclasses into identity-less versions

Fixes #1351