reworked how m_ops are used