lots of undefined changes, will refine tomorrow cause i'm too sleepy