initial working version
add kernel