holy fuck, refactor everything, so close