settings can be nil