add functor type; add getm/putm