seperated kernel lib