Shall update this later, when the code isn't fighting with me.