refactored _mul