remove some unneeded Ord type constraints
use Strict StateMonad
convert from fundeps to type synonym family