I made some changes here as well, merge will have to be done manually~