Implementing and using a ConnectionPool