public function DeleteOverwriteTables() {
		$Tables = array('Activity', 'Category', 'Comment', 'Conversation', 'ConversationMessage',
   		'Discussion', 'Draft', 'Invitation', 'Media', 'Message', 'Photo', 'Permission', 'Rank', 'Poll', 'PollOption', 'PollVote', 'Role', 'UserAuthentication',
   		'UserComment', 'UserConversation', 'UserDiscussion', 'UserMeta', 'UserRole');

      // Delete the default role settings.
      SaveToConfig(array(
         'Garden.Registration.DefaultRoles' => array(),
         'Garden.Registration.ApplicantRoleID' => 0
      ));

		// Execute the SQL.
		$CurrentSubstep = GetValue('CurrentSubstep', $this->Data, 0);
		for($i = $CurrentSubstep; $i < count($Tables); $i++) {
			$Table = $Tables[$i];

         // Make sure the table exists.
         $Exists = Gdn::Structure()->Table($Table)->TableExists();
         Gdn::Structure()->Reset();
         if (!$Exists)
            continue;

         $this->Data['CurrentStepMessage'] = $Table;
         
			if($Table == 'Permission')
            $this->SQL->Delete($Table, array('RoleID <>' => 0));
			else
				$this->SQL->Truncate($Table);
			if($this->Timer->ElapsedTime() > $this->MaxStepTime) {
				// The step's taken too long. Save the state and return.
				$this->Data['CurrentSubstep'] = $i + 1;
				return FALSE;
			}
		}
		if(isset($this->Data['CurrentSubstep']))
			unset($this->Data['CurrentSubstep']);

		$this->Data['CurrentStepMessage'] = '';
		return TRUE;
	}