server abstraction