move the changes system into its own module, clean it up (hook gui stuff using signals), fixes