committing just the shell
partially solved using yield, dang that is neat
now for the extra credit