change a lot of mechanism