re-stating the requirements, previous code was dirtehh and already starting to get unfocused