refactored the whole thing to a proper structure, might take few more commits to make everything nice and pretty again but so far looks good and usable