Kinetic Monte Carlo surface growth method