fully implement status changer
still very sketchy, but it works
most of the time