Replaced fixed position patterns with record patterns.  Much cleaner code that is easier to maintain as well.
Also, added support for credentials.
Removed 'usesDefaultPort' as a stored record field and instead compute it when needed, which is fairly rare.