simple implementation of 3
partially done will choice 1
made option 1 work correctly
working on choice 2 prototype
made choice 2, sort of
Added a key checker, and stuff
made choice 2 recursive