Split and generalize LCC.Internal.Types, met the Constrained-Monad problem