In all samples of gen_server implementations I've saw the ?SERVER is assigned to ?MODULE. Look down here:
-define(SERVER, ?MODULE).
...
gen_server:start_link({local, ?SERVER}, ?MODULE, [], [])
The idea, I have clued is to run many server processes with different names but implemented in one module. But, when I tried to run server with the name different from module name in my experiments, I always got errors. Can, please, somebody explain me this subtlety.