optimized material class, still have to add KK