@Override
  public IGPMemberOptionManager getMemberOptionManager() {
    GeoPlatformMemberRepository repo = GeoPlatformMemberRepository.getInstance();

    IGPMemberOptionManager member = repo.findMember(getMemberManagerType());

    return member != null ? member : istantiate();
  }
  /**
   * Istantiate Member Manager if not found in Repository
   *
   * @return IGPMemberOptionManager
   */
  private IGPMemberOptionManager istantiate() {
    IGPMemberOptionManager memberManager = null;

    switch (getMemberManagerType()) {
      case SIMPLE_PROPERTIES:
        memberManager = new SimpleMemberOptionManager();
        break;
      case ADVANCED_PROPERTIES:
        memberManager = new AdvancedMemberOptionManager();
        break;
      default:
        memberManager = new SimpleMemberOptionManager();
    }

    GeoPlatformMemberRepository.getInstance().bindMember(memberManager);

    return memberManager;
  }
 @Override
 public IGPMemberOptionManager getMemberOptionManager(GPMemberOptionType type) {
   return GeoPlatformMemberRepository.getInstance().findMember(type);
 }