first iteration of finished version. Make note of other dependencies before use