So much stuff... should really commit more often... gotta run though, no time for proper comment