Welcome Joseph,
It sounds like you're trying to roll your own process registry.
For simplicity's sake it may be a good idea to use something along the
lines of gproc or syn.
rough untested code
-define(PROC_NAME(X), {n, l, X}).
-define(VIA(X), {via, gproc, ?PROC_NAME(X)}).
start_link(Id) ->
gen_server:start_link(?VIA(Id), ?MODULE, [Id], []).
init([Id]) ->
....
{ok, State}
and you can then call via gproc and let it do the work for you
gen_server:call(?VIA(Id), {msg, Val})
Kind regards,
Leonard