original version
modified functions to overloaded operators += -= *= /= %=