split into conn.go, driver.go, pool.go
implement everything except PurgeInactivePeers