porting from alucard kernel!