extracted abstract server to allow using custom extensions