moved ops to its own module