abstracted walking code into a mixin