update kernel(based on dorimanX source)