Very Messy Kernel. It uses some stuff from other people