condensed everything into one file