id() :: term()
message() :: term()
state() :: term()
activate(message(), state()) :: state()
init(id()) :: state()