Made the walker so it can use hooks for checks. Rather than having them hard coded.
Extracted the walker into its own module.