public static UserID createNewAccount(Scanner scan) {

    String username = checkString(Func.USERNAME, scan, true, null);
    String password = checkString(Func.PASSWORD, scan, true, null);
    String name = checkString(Func.NAME, scan, true, null);

    // Attributes
    Attributes.Gender gender =
        (Attributes.Gender) setUpEnumAttribute(scan, Attributes.AttributeEnum.GENDER);
    int age = makeSureValInRange(scan, 18, 200, "age", ValType.INTEGER, false, true).intValue();
    int weight =
        makeSureValInRange(scan, 70, 2000, "weight", ValType.INTEGER, false, true).intValue();
    double height =
        makeSureValInRange(scan, 3, 10, "height", ValType.DOUBLE, false, true).doubleValue();
    Attributes.Sexuality sexuality =
        (Attributes.Sexuality) setUpEnumAttribute(scan, Attributes.AttributeEnum.SEXUALITY);
    Attributes.EyeColor eyeColor =
        (Attributes.EyeColor) setUpEnumAttribute(scan, Attributes.AttributeEnum.EYE_COLOR);
    Attributes.HairColor hairColor =
        (Attributes.HairColor) setUpEnumAttribute(scan, Attributes.AttributeEnum.HAIR_COLOR);
    Attributes.Ethnicity ethnicity =
        (Attributes.Ethnicity) setUpEnumAttribute(scan, Attributes.AttributeEnum.ETHNICITY);
    Attributes.Education education =
        (Attributes.Education) setUpEnumAttribute(scan, Attributes.AttributeEnum.EDUCATION);
    Attributes.Zodiac zodiac =
        (Attributes.Zodiac) setUpEnumAttribute(scan, Attributes.AttributeEnum.ZODIAC);

    // preparing the fields to be packaged and updated in database
    String[] strFields = new String[Attributes.NUM_ENUM_FIELDS + UserID.NUM_UID_ENTRIES];
    int i = 0;
    strFields[i] = username;
    strFields[++i] = password;
    strFields[++i] = name;
    strFields[++i] = gender.toString();
    strFields[++i] = sexuality.toString();
    strFields[++i] = ethnicity.toString();
    strFields[++i] = eyeColor.toString();
    strFields[++i] = hairColor.toString();
    strFields[++i] = education.toString();
    strFields[++i] = zodiac.toString();
    DBConnect connection = new DBConnect();
    connection.insertRow(strFields, age, weight, height);
    // Update registered users hash table
    Attributes attr =
        new Attributes(
            gender, sexuality, eyeColor, hairColor, ethnicity, education, zodiac, age, weight,
            height);
    UserID user = new UserID(username, password, name, attr);
    registeredUsers.put(username, user);
    return user;
  }
  public UserManager() {

    registeredUsers = new Hashtable<String, UserID>(HTABLE_INIT_CAP, HTABLE_LOAD_FACT);
    DBConnect connection = new DBConnect();
    connection.setResultSet();
    ResultSet data = connection.getData();

    try {
      while (data.next()) {
        String username = data.getString("Username");
        String password = data.getString("Password");
        String name = data.getString("Name");

        String[] enumFieldString = new String[Attributes.NUM_ENUM_FIELDS];
        int start = UserID.NUM_UID_ENTRIES + 1;
        int i = start;
        int j = 0;
        while (i < start + Attributes.NUM_ENUM_FIELDS) {
          enumFieldString[j] = data.getString(i);
          i++;
          j++;
        }

        int age = data.getInt("Age");
        int weight = data.getInt("Weight");
        double height = data.getDouble("Height");

        Attributes attributes = new Attributes(enumFieldString, age, weight, height);
        UserID user = new UserID(username, password, name, attributes);
        registeredUsers.put(username, user);
      }
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    connection.closeConnection();
  }