having these four  functions (_get_radix, _get_base, _current_suffix, _cleanup_empty_dirs) at module level scope prevents future programmers from overriding them via inheritance.  I would prefer to see them as static member functions of the base class.