spec() :: module() | {module(), args :: term()}
deregister(spec()) :: :ok | {:error, term()}
register(spec()) :: :ok | {:error, term()}