Yes, TCO was wrong.  My bad.  The recursive call is definitely problematic.

@brutski - I don't see why your refactor needs to support the last Crichton format, when no one uses the last format.  This is shouldn't be a feature.