The gen_server with which everything is getting registered is not a necessity. Instead, registering Timezones to self() should just use the process dictionary, and custom formatters, parsers, and timezones can just be loaded into and read-from the application env_vars.
This eliminates a potential for bottlenecks around a gen_server.
Further, this means users who wish to use a more purely functional method (passing TZ around, rather than relying on some kind of state), will no longer need to start a process they won't be using anyway.
The gen_server with which everything is getting registered is not a necessity. Instead, registering Timezones to self() should just use the process dictionary, and custom formatters, parsers, and timezones can just be loaded into and read-from the application env_vars.
This eliminates a potential for bottlenecks around a gen_server.
Further, this means users who wish to use a more purely functional method (passing TZ around, rather than relying on some kind of state), will no longer need to start a process they won't be using anyway.