I would put range check in every walk* function to bail out as early as possible