     }
     
     guard addrInfo == 0 else {
-      let errMsg = ("getaddrinfo failed: " + String(UTF8String: strerror(errno))!)
+      let errMsg = ("Get Address Info Failed: " + String(UTF8String: strerror(errno))!)
       println(errMsg)
       
-      throw ClientError.GetAddressInfoFailed(errMsg)
+      throw SwiftSSH2Error.HostError(errMsg)
     }
     
     guard servInfo.hashValue != 0 && servInfo.memory.hashValue != 0 else {
-      throw ClientError.UnableToDiscoverServerInformationForHost
+      throw SwiftSSH2Error.HostError("Unable to discover server information for host.")
     }
     
     return servInfo.memory.memory

        let errMsg = "sftp2 session failed: " + String(UTF8String: strerror(errno))!
        println(errMsg)
        
        throw ClientError.SFTP2SessionFailed(errMsg)
      }
    } while (sftp_session.cSFTPSession.hashValue == 0)
    


/**
List of possible errors thrown by the framework.
*/
public enum SwiftSSH2Error: ErrorType {
  /**
  Thrown when `libssh2_session_init_ex` fails.
  */
  case UnableToCreateUnderlyingLibSSH2Session
  
  /**
  Thrown whenever an operation is attempted without a valid `SSH2Session`.
  */
  case UnableToProceedWithoutValidSSH2Session(String)
  
  /**
  Throw whenever `libssh2_sftp_init` fails.
  */
  case SFTP2SessionError(String)
  
  /**
  Thrown when any host communication fails. 
    - Connect
    - Discoverability
  */
  case HostError(String)
  
  /**
  Thrown whenever an I/O operation fails.
    - List directory contents
    - Create directory
    - Remove directory
    - Resolve symlinks
  */
  case IOError(String)
  
  /**
  Thrown whenever an authentication operation fails or lacks data to even attempt it.
  */
  case AuthenticationFailed(String)
  
  /**
  Thrown whenever a retrieve operation fails.
  - Get banner
  - Retrieve authentication methods
  */
  case RetrieveDataOperationError(String)
}

/**
