better connector abstraction