docs: function( cb_success, cb_failure ) {
          // Create auth object ready to be populated
          var auth = {};
  
          /**
           * Gets the correct method for building an authentication object to pass to github
           * @param authType { basic || oauth }
           * @return calls the correct function for building an auth object || null
           */
          var startAuth = function( authType ) {
              switch ( authType.toLowerCase() ) {
                  case 'basic':
                      console.log( 'Attempting to use basic authorisation' );
                      getBasicAuth() ? cb_success() : cb_failure();
                      break;
  
                  case 'oauth':
                      console.log( 'Using oAuth to authenticate' );
                      return getOAuth();
                      break;
  
                  default:
                      console.warn( 'Incorrect authorisation type passed to Octofish' );
                      console.warn( 'Authorisation to github will be unauthorised' );
  
                      cb_failure();
                      return false;
              }
  
              return true;
          };
  
          /**
           * Used the auth token to authenticate
           * @param auth {Object} the successfully populated auth token
           */
          var storeAuth = function( auth ) {
              octofish.github.authenticate( auth );
          };
  
          /**
           * Completes basic authorisation or returns false on failure
           * @todo Currently only checks that a username and password have been specified, not that they have successfully completed authentication
           * @return {Boolean}
           */
          var getBasicAuth = function() {
              auth.type = 'basic';
  
              auth.username = process.env.GHusername || octofish.config.auth.username || null;
              auth.password = process.env.GHpassword || octofish.config.auth.password || null;
  
              if ( !auth.password || !auth.username ) {
                  return false;
              } else {
                  octofish.github.authenticate( auth );
                  return true;
              }
          };
  
          /**
           * Attempts to use oAuth to authenticate.
           * 1) If a token is specified in the config then that is used
           * 2) Attempt basic authentication (required to request a token - bails on fail)
           * 3) Builds oAuth token (not all parameters specified here are required)
           * 4) Attempts to create the auth token and use it to authenticate
           */
          var getOAuth = function() {
              auth.type = 'oauth';        // @todo this gets reset to basic during getBasicAuth() check
  
              // If a valid token has been passed then just use that to authenticate
              if ( octofish.config.auth.token ) {
                  auth.token = octofish.config.auth.token;
                  storeAuth( auth );
                  cb_success();
                  return;
              }
  
              // If we got here then we'll have to request a valid token from github which will require basic authentication
              // Perform basic authorisation and bail on fail
              if ( !getBasicAuth() ) {            // @todo only validates that username and password have been specified
                  console.warn( 'Basic auth is required to use oAuth but...' );
                  console.warn( 'Basic authentication failed --- can not proceed with oauth' );
                  cb_failure();
                  return;
              }
  
              // Build oauth object to request auth token
              // Auth token is added to the object on success and passed to storeAuth() to authenticate with
              // @todo Not all of these parameters are required to request a token
              // @todo scopes in the config must be set closed up (no whitespace) - add utility function to strip whitespace
              auth.type = 'basic';            // This is included for code clarity - getBasicAuth() above will already have set this
              auth.client_ID = process.env.oauthKEY || octofish.config.auth.KEY || '';
              auth.client_secret = process.env.oauthSECRET || octofish.config.auth.SECRET || '';
              octofish.config.auth.scope ? auth.scopes = octofish.config.auth.scope.split(',') : '';
              auth.note = octofish.config.auth.note;
              auth.note_url = octofish.config.auth.note_url;
  
              // Authenticate using oauth
              octofish.github.authorization.create( auth, function( err, res) {
                  if ( err ) {
                      console.warn( 'Error using oAuth' );
                      console.log( 'oAuth object used to authenticate: ');
                      console.dir( auth );
                      console.log( 'Error returned: ');
                      console.log( err );
                      cb_failure();
                      return;
                  }
  
                  console.log( 'Authenticating to github with oAuth --- success' );
                  auth.token = res.token;
                  storeAuth( auth );
  
                  cb_success();
              });
          };
  
          // Get the authentication data
          startAuth( octofish.config.auth.type );
      }