move ops to own module