I have changed the entirety of the mechanics