diff --git a/api.go b/api.go
index 161586651bf913dfce341814cab84a8a8256b23c..86cdfb132fd0e025de5cd2b630184e47f1abc605 100644
--- a/api.go
+++ b/api.go
@@ -4,9 +4,9 @@ import "github.com/imdario/mergo"
 
 // NewSetting creates a new configuration setting
 // with the given defaults.
-func New[C any](defaults C) *setting[C] {
+func New[C any](defaults C) *Settings[C] {
 
-	s := &setting[C]{}
+	s := &Settings[C]{}
 	s.initDefaults()
 
 	if err := mergo.Merge(&defaults, s.config); err != nil {
@@ -28,7 +28,7 @@ func New[C any](defaults C) *setting[C] {
 
 // Set the mnemonic
 // The mnemonic is used to identify the configuration in the configuration file
-func (s *setting[C]) SetMnemonic(mnemonic string) *setting[C] {
+func (s *Settings[C]) SetMnemonic(mnemonic string) *Settings[C] {
 	if mnemonic == "" {
 		s.errors = append(s.errors, MnemonicEmptyError)
 	} else {
@@ -38,6 +38,6 @@ func (s *setting[C]) SetMnemonic(mnemonic string) *setting[C] {
 }
 
 // Config() returns the configuration
-func (s *setting[C]) Config() C {
+func (s *Settings[C]) Config() C {
 	return s.config
 }
diff --git a/change.go b/change.go
index c7dd5da374173bbd78ae05197a0bf39a9e204e2e..d68aad6e6ffde8bd41dab5b8b213717ec873202c 100644
--- a/change.go
+++ b/change.go
@@ -10,19 +10,19 @@ type ChangeEvent struct {
 
 type EventHook func(event ChangeEvent)
 
-func (s *setting[C]) OnChange(hook EventHook) *setting[C] {
+func (s *Settings[C]) OnChange(hook EventHook) *Settings[C] {
 	s.hooks.change = append(s.hooks.change, hook)
 	return s
 }
 
-func (s *setting[C]) notifyChangeHooks(changelog diff.Changelog) *setting[C] {
+func (s *Settings[C]) notifyChangeHooks(changelog diff.Changelog) *Settings[C] {
 	for _, h := range s.hooks.change {
 		h(ChangeEvent{Changlog: changelog})
 	}
 	return s
 }
 
-func (s *setting[C]) setConfigInternal(config C, lock bool) *setting[C] {
+func (s *Settings[C]) setConfigInternal(config C, lock bool) *Settings[C] {
 
 	var (
 		changelog diff.Changelog
@@ -68,6 +68,6 @@ func (s *setting[C]) setConfigInternal(config C, lock bool) *setting[C] {
 	return s
 }
 
-func (s *setting[C]) SetConfig(config C) *setting[C] {
+func (s *Settings[C]) SetConfig(config C) *Settings[C] {
 	return s.setConfigInternal(config, true)
 }
diff --git a/env.go b/env.go
index b656b66be6cc19eaf637d1d5d309b2efb44514cd..871e4fe05a4d61784c84cc4f4816a06838d7bdd7 100644
--- a/env.go
+++ b/env.go
@@ -6,7 +6,7 @@ import (
 	"strconv"
 )
 
-func (s *setting[C]) InitFromEnv(prefix string) *setting[C] {
+func (s *Settings[C]) InitFromEnv(prefix string) *Settings[C] {
 
 	s.Lock()
 	defer s.Unlock()
diff --git a/error.go b/error.go
index 667c886070b46ed431dfd3b052eb1a262587fb6e..0addae37b10d3ed7658d4b08a8a7c90392def8d2 100644
--- a/error.go
+++ b/error.go
@@ -7,18 +7,18 @@ import (
 
 // ResetError is used to reset the error to nil
 // After calling this function, the call HasErrors() will return false
-func (s *setting[C]) ResetErrors() *setting[C] {
+func (s *Settings[C]) ResetErrors() *Settings[C] {
 	s.errors = []error{}
 	return s
 }
 
 // Check if the setting contains errors
-func (s *setting[C]) HasErrors() bool {
+func (s *Settings[C]) HasErrors() bool {
 	return len(s.errors) > 0
 }
 
 // Get all errors
-func (s *setting[C]) Errors() []error {
+func (s *Settings[C]) Errors() []error {
 	return s.errors
 }
 
diff --git a/export.go b/export.go
index c62cf595dc61309897a8027816d88b1a1c4e2053..269817ba2eb6a1acf35d211e6619cb3194c78b79 100644
--- a/export.go
+++ b/export.go
@@ -10,24 +10,24 @@ import (
 	"gopkg.in/yaml.v3"
 )
 
-func (s *setting[C]) Export() *setting[C] {
+func (s *Settings[C]) Export() *Settings[C] {
 	return s
 }
 
-func (s *setting[C]) writeJson(writer io.Writer) error {
+func (s *Settings[C]) writeJson(writer io.Writer) error {
 	encoder := json.NewEncoder(writer)
 	return encoder.Encode(s.config)
 }
 
-func (s *setting[C]) writeYaml(writer io.Writer) error {
+func (s *Settings[C]) writeYaml(writer io.Writer) error {
 	encoder := yaml.NewEncoder(writer)
 	return encoder.Encode(s.config)
 }
-func (s *setting[C]) writeToml(writer io.Writer) error {
+func (s *Settings[C]) writeToml(writer io.Writer) error {
 	encoder := toml.NewEncoder(writer)
 	return encoder.Encode(s.config)
 }
-func (s *setting[C]) writeProperties(writer io.Writer) error {
+func (s *Settings[C]) writeProperties(writer io.Writer) error {
 
 	m, errors := getMapForProperties[C](s.config)
 
@@ -44,7 +44,7 @@ func (s *setting[C]) writeProperties(writer io.Writer) error {
 
 }
 
-func (s *setting[C]) WriteFile(fn string, format Format) *setting[C] {
+func (s *Settings[C]) WriteFile(fn string, format Format) *Settings[C] {
 
 	var err error
 
@@ -66,7 +66,7 @@ func (s *setting[C]) WriteFile(fn string, format Format) *setting[C] {
 
 }
 
-func (s *setting[C]) Write(writer io.Writer, format Format) *setting[C] {
+func (s *Settings[C]) Write(writer io.Writer, format Format) *Settings[C] {
 
 	var err error
 
diff --git a/file.go b/file.go
index 2a1dd26749bb5812192ac76faf8c745be97f5bf1..8685fd2d7682028837862cc11c4d25f71de21514 100644
--- a/file.go
+++ b/file.go
@@ -21,7 +21,7 @@ type fileBackend struct {
 }
 
 // AddFiles adds a file to the list of files to import
-func (s *setting[C]) AddFile(file string, format Format) *setting[C] {
+func (s *Settings[C]) AddFile(file string, format Format) *Settings[C] {
 	s.files.files = append(s.files.files, files{file, format})
 	return s
 }
@@ -33,12 +33,12 @@ func initFileBackend(files *fileBackend) {
 }
 
 // Path returns the configuration directory
-func (s *setting[C]) Directories() []string {
+func (s *Settings[C]) Directories() []string {
 	return s.files.directories
 }
 
 // AddPath adds a directory to the configuration directory
-func (s *setting[C]) AddDirectory(d string) *setting[C] {
+func (s *Settings[C]) AddDirectory(d string) *Settings[C] {
 	s.Lock()
 	defer s.Unlock()
 	s.files.directories = append(s.files.directories, d)
@@ -46,7 +46,7 @@ func (s *setting[C]) AddDirectory(d string) *setting[C] {
 	return s
 }
 
-func (s *setting[C]) sanitizeDirectories() {
+func (s *Settings[C]) sanitizeDirectories() {
 
 	wd, err := os.Getwd()
 	if err != nil {
@@ -76,7 +76,7 @@ func (s *setting[C]) sanitizeDirectories() {
 }
 
 // Set all configuration directories
-func (s *setting[C]) SetDirectories(d []string) *setting[C] {
+func (s *Settings[C]) SetDirectories(d []string) *Settings[C] {
 	s.Lock()
 	defer s.Unlock()
 
@@ -86,7 +86,7 @@ func (s *setting[C]) SetDirectories(d []string) *setting[C] {
 }
 
 // Add the current working directory to the configuration directory
-func (s *setting[C]) AddWorkingDirectory() *setting[C] {
+func (s *Settings[C]) AddWorkingDirectory() *Settings[C] {
 	s.Lock()
 	defer s.Unlock()
 
@@ -101,7 +101,7 @@ func (s *setting[C]) AddWorkingDirectory() *setting[C] {
 }
 
 // Add the Unix etc directory to the configuration directory
-func (s *setting[C]) AddEtcDirectory() *setting[C] {
+func (s *Settings[C]) AddEtcDirectory() *Settings[C] {
 	s.Lock()
 	defer s.Unlock()
 
@@ -125,7 +125,7 @@ func (s *setting[C]) AddEtcDirectory() *setting[C] {
 
 // Add the user configuration directory to the configuration directory
 // The mnemonic must be set for this function
-func (s *setting[C]) AddUserConfigDirectory() *setting[C] {
+func (s *Settings[C]) AddUserConfigDirectory() *Settings[C] {
 
 	if s.mnemonic == "" {
 		s.errors = append(s.errors, MnemonicEmptyError)
@@ -149,14 +149,14 @@ func (s *setting[C]) AddUserConfigDirectory() *setting[C] {
 
 // Add the current working directory, the user configuration directory
 // and the Unix etc directory to the configuration directory
-func (s *setting[C]) SetDefaultDirectories() *setting[C] {
+func (s *Settings[C]) SetDefaultDirectories() *Settings[C] {
 	s.AddWorkingDirectory().
 		AddUserConfigDirectory().
 		AddEtcDirectory()
 	return s
 }
 
-func (s *setting[C]) SetFileFormat(format Format) *setting[C] {
+func (s *Settings[C]) SetFileFormat(format Format) *Settings[C] {
 
 	if slices.Contains(availableFormats, format) {
 		s.files.format = format
@@ -168,7 +168,7 @@ func (s *setting[C]) SetFileFormat(format Format) *setting[C] {
 }
 
 // Set the file name without extension
-func (s *setting[C]) SetFileName(name string) *setting[C] {
+func (s *Settings[C]) SetFileName(name string) *Settings[C] {
 
 	if name == "" {
 		s.errors = append(s.errors, FileNameEmptyError)
@@ -179,7 +179,7 @@ func (s *setting[C]) SetFileName(name string) *setting[C] {
 	return s
 }
 
-func (s *setting[C]) SetFilesystem(f fs.FS) *setting[C] {
+func (s *Settings[C]) SetFilesystem(f fs.FS) *Settings[C] {
 	s.files.fs = f
 	return s
 }
diff --git a/flags.go b/flags.go
index b43df082bc9eb29a94cad9966165a6f4e5c0f6fb..c9d75b849583f69b67a42cf139504e0bd7ec5874 100644
--- a/flags.go
+++ b/flags.go
@@ -8,7 +8,7 @@ import (
 
 // AddFileFromFlagSet adds a file to the configuration
 // The file is read from the flag specified by the name
-func (s *setting[C]) AddFileFromFlagSet(flagset *flag.FlagSet, name string, format Format) *setting[C] {
+func (s *Settings[C]) AddFileFromFlagSet(flagset *flag.FlagSet, name string, format Format) *Settings[C] {
 
 	flag := flagset.Lookup(name)
 	if flag == nil {
@@ -26,7 +26,7 @@ func (s *setting[C]) AddFileFromFlagSet(flagset *flag.FlagSet, name string, form
 }
 
 // InitFromFlagSet initializes the configuration from the command line flags.
-func (s *setting[C]) InitFromFlagSet(flagset *flag.FlagSet) *setting[C] {
+func (s *Settings[C]) InitFromFlagSet(flagset *flag.FlagSet) *Settings[C] {
 	s.Lock()
 	defer s.Unlock()
 
diff --git a/http-handler.go b/http-handler.go
index 59b3e94187eba2a5ba3f5e02d912b6c7d8f769dd..c8f9bd10c7e01e55d4d7726f169aab9bc2af3457 100644
--- a/http-handler.go
+++ b/http-handler.go
@@ -9,7 +9,7 @@ import (
 
 // ContextKey is the key used to store the configuration in the request context
 // This is used by the middleware
-func (s *setting[C]) Middleware(next http.Handler) http.Handler {
+func (s *Settings[C]) Middleware(next http.Handler) http.Handler {
 	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		ctx := r.Context()
 		ctx = context.WithValue(ctx, contextKey, s.config)
@@ -19,7 +19,7 @@ func (s *setting[C]) Middleware(next http.Handler) http.Handler {
 }
 
 // serveGet handles GET requests
-func (s *setting[C]) serveGet(w http.ResponseWriter, r *http.Request) {
+func (s *Settings[C]) serveGet(w http.ResponseWriter, r *http.Request) {
 
 	n := negotiation.New(r.Header)
 	m := n.Type("application/json", "text/json", "application/yaml", "text/yaml", "application/toml", "text/toml", "application/properties", "text/properties", "text/x-java-properties", "text/x-properties")
@@ -56,7 +56,7 @@ func (s *setting[C]) serveGet(w http.ResponseWriter, r *http.Request) {
 
 }
 
-func (s *setting[C]) servePost(w http.ResponseWriter, r *http.Request) {
+func (s *Settings[C]) servePost(w http.ResponseWriter, r *http.Request) {
 
 	n := negotiation.New(r.Header)
 	m := n.ContentType("application/json", "text/json", "application/yaml", "text/yaml", "application/toml", "text/toml", "application/properties", "text/properties", "text/x-java-properties", "text/x-properties")
@@ -93,7 +93,7 @@ func (s *setting[C]) servePost(w http.ResponseWriter, r *http.Request) {
 }
 
 // ServeHTTP implements the http.Handler interface
-func (s *setting[C]) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+func (s *Settings[C]) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 
 	switch r.Method {
 	case http.MethodGet:
diff --git a/import.go b/import.go
index 64140cb61b6e796e2b3412b768c03cc6102ffb79..82238ed1bbcc47a9f31a5cfed833a118650f09b2 100644
--- a/import.go
+++ b/import.go
@@ -42,7 +42,7 @@ func importProperties[C any](config *C, reader io.Reader) error {
 
 }
 
-func (s *setting[C]) importStream(r reader) {
+func (s *Settings[C]) importStream(r reader) {
 	var c C
 	var err error
 
@@ -73,17 +73,17 @@ func (s *setting[C]) importStream(r reader) {
 	}
 }
 
-func (s *setting[C]) importStreams() {
+func (s *Settings[C]) importStreams() {
 	for _, r := range s.stream.readers {
 		s.importStream(r)
 	}
 }
 
-func (s *setting[C]) importFiles() {
+func (s *Settings[C]) importFiles() {
 
 	s.fileWatch.Lock()
 	defer s.fileWatch.Unlock()
-	
+
 	// new files may have been added
 	s.fileWatch.watchList = make(map[string]string)
 
@@ -120,7 +120,7 @@ func (s *setting[C]) importFiles() {
 
 }
 
-func (s *setting[C]) Import() *setting[C] {
+func (s *Settings[C]) Import() *Settings[C] {
 
 	s.Lock()
 	defer s.Unlock()
diff --git a/settings.go b/settings.go
index 463d0f9dd8835a39ea766c4cfe62e967b82bcd6b..1828db4e70bffd7cb64281ef216fbc33a498a896 100644
--- a/settings.go
+++ b/settings.go
@@ -15,7 +15,7 @@ type fileWatch struct {
 	onWatch     bool
 }
 
-type setting[C any] struct {
+type Settings[C any] struct {
 	files  fileBackend
 	stream streamBackend
 	config C
@@ -30,7 +30,7 @@ type setting[C any] struct {
 	fileWatch fileWatch
 }
 
-func (s *setting[C]) initDefaults() *setting[C] {
+func (s *Settings[C]) initDefaults() *Settings[C] {
 
 	err := runOnTags(&s.config, []string{"default"}, func(v string, field reflect.Value) {
 
diff --git a/stream.go b/stream.go
index b7e052655bad3159755b5c6cd70ad7380c278569..035796b62afd84736bca1b267d9345ac2eb7d314 100644
--- a/stream.go
+++ b/stream.go
@@ -20,20 +20,20 @@ type streamBackend struct {
 //type StreamOption struct {
 //}
 
-//func (s *setting[C]) AddStream(stream io.ReadWriter, format Format) *setting[C] {
+//func (s *Settings[C]) AddStream(stream io.ReadWriter, format Format) *Settings[C] {
 //	return s.
 //		AddReader(stream, format)
 //		//AddWriter(stream, format)
 //}
 
-func (s *setting[C]) AddReader(r io.Reader, format Format) *setting[C] {
+func (s *Settings[C]) AddReader(r io.Reader, format Format) *Settings[C] {
 	s.Lock()
 	defer s.Unlock()
 	s.stream.readers = append(s.stream.readers, reader{format, r})
 	return s
 }
 
-//func (s *setting[C]) AddWriter(w io.Writer, format Format) *setting[C] {
+//func (s *Settings[C]) AddWriter(w io.Writer, format Format) *Settings[C] {
 //	s.Lock()
 //	defer s.Unlock()
 //	s.stream.writers = append(s.stream.writers, writer{format, w})
diff --git a/watch.go b/watch.go
index 3556ff55e5c4c26c6c59840faa11bbc098066bbf..818c03b2d9696d02cad2756bf41f6aacc9f19f05 100644
--- a/watch.go
+++ b/watch.go
@@ -4,7 +4,7 @@ import (
 	"github.com/fsnotify/fsnotify"
 )
 
-func (s *setting[C]) initWatch() *setting[C] {
+func (s *Settings[C]) initWatch() *Settings[C] {
 
 	var err error
 
@@ -23,7 +23,7 @@ func (s *setting[C]) initWatch() *setting[C] {
 
 }
 
-func (s *setting[C]) StopWatching() *setting[C] {
+func (s *Settings[C]) StopWatching() *Settings[C] {
 
 	s.fileWatch.Lock()
 	defer s.fileWatch.Unlock()
@@ -44,7 +44,7 @@ func (s *setting[C]) StopWatching() *setting[C] {
 }
 
 // Watch the given file for changes
-func (s *setting[C]) Watch() *setting[C] {
+func (s *Settings[C]) Watch() *Settings[C] {
 
 	s.fileWatch.Lock()
 	defer s.fileWatch.Unlock()