changed cpu implementation