added support for % operator