added kernel allocation method