added modulus operation