Refactor to use a Dialer interface

All dialers might not connect in a traditional way.