Implementors might also implement connection pooling.
Implementions should provide a public default constructor.