Refactored (once again) the traverseSchema API