basic kernel generation