@Override
    public boolean activateProfile(Profile profile) {
        
        // Save the directories
        String dataDir = getDir();
        String saveDir = dataDir + getGameSaveDir();
        String profilesDir = dataDir + getSave() + File.separator;
        
        // Find the currently active profile
        ProfileFactory pf = ProfileFactory.getInstance();
        Profile[] profiles = pf.getProfiles(getId());
        Profile currentProfile = null;
        for(int x=0; x<profiles.length; x++){
            if(profiles[x].isActive()){
                currentProfile = profiles[x];
                break;
            }
        }
        
        // Create the Files that need to be renamed
        File saveFolder = new File(saveDir);
        File profileSaves = new File(profilesDir + profile.getSaveDir());
        
        // See if there is an active profile
        if(currentProfile == null){
            // No profile is active delete the saves folder
            if( saveFolder.exists() && !saveFolder.delete()){
                Main.handleException("Unable to activate the profile because the save folder contains saves from an unkown or de-activated profile.",
                        null, Main.WARN_LEVEL);
                return false;
            }
        } else {
            // Rename the saved games folder to the previous profile's saveDir
            if( !saveFolder.renameTo(
                    new File(profilesDir + currentProfile.getSaveDir())) )
            {
                Main.handleException("Unable to move the saved game folder.",
                        null, Main.WARN_LEVEL);
                return false;
            }
        }
        
        // Rename the profile's save game directory to the morrowind save directory
        if( profileSaves.renameTo(new File(saveDir)) ) {
            pf.setActive(profile);
            return true;
        } else {
            Main.handleException("Unable to move the profile's saved games into the save game folder.",
                    null, Main.WARN_LEVEL);
            return false;
        }
    }