initial impl of MulGen