merged some stuff from linux