numeric operation: need to redesign using scala Numeric[T] instead of java.lang.Number