I don't like this less explicit way to giving the values to the function to create a settings file. With your solution, the caller sets 'local_share' to set the default database path, i. e. also the name of the database file (and some things more). But my main goal was that the function to create the settings does not set any default value at all. Now it is once more impossible to get the full path of the default database without introspection the create settings function.