grabbed changes to kernel from master