public abstract void ProcessMessage(WorldMessage message);
public virtual void PostMessage(WorldMessage message) { messages.Enqueue(message); }