Update and bring changes from MrSteve555 CM tree