def __init__(self):
        # create cache and config directories
        try:
            os.makedirs(dirs.user_cache_dir)
        except OSError as e:
            if not os.path.isdir(dirs.user_cache_dir):
                raise

        try:
            os.makedirs(dirs.user_config_dir)
        except OSError as e:
            if not os.path.isdir(dirs.user_config_dir):
                raise

        # open config file
        self.config = Config(os.path.join(dirs.user_config_dir, config_file))
        self.config.read()

        # configure cache
        region.configure('dogpile.cache.dbm',
                         expiration_time=timedelta(days=30),
                         arguments={
                             'filename':
                             os.path.join(dirs.user_cache_dir, cache_file),
                             'lock_factory':
                             MutexLock
                         })