Code is messy as it's just some random stuff I gathered from old unfinished projects