So much awful code. Sorry