Functor: fix typos
Core: rethink type classes