having to pass the return data type of a bunch of methods in the class initializer seems strange to me. how about providing alternative functions for returning multiple values? for example: `site_config_dir` vs `site_config_dirs` (note the plural form)