public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
  {
    String dataSource = Settings.getInstance().getSiteInfo(CVUtility.getHostName(super.getServlet().getServletContext())).getDataSource();
    ActionErrors allErrors = new ActionErrors();
    ActionForward forward = null;
    try
    {
      DynaActionForm dynaForm = (DynaActionForm)form;
      HttpSession session = request.getSession();
      int individualId = ((UserObject)session.getAttribute("userobject")).getIndividualID();
      String typeOfSave = "saveclose";
      if (request.getParameter("buttonpress") != null)
      {
        typeOfSave = request.getParameter("buttonpress");
      }
      UserHome uhome = (UserHome)CVUtility.getHomeObject("com.centraview.administration.user.UserHome", "User");
      User uRemote = (User)uhome.create();
      uRemote.setDataSource(dataSource);
      String oldPassword = "", newPassword = "";
      // TODO integrate password change with RememberMe functionallity.
      if (uRemote != null)
      {
        oldPassword = (String)request.getParameter("oldpassword");
        newPassword = (String)request.getParameter("newpassword");
      }
      if (newPassword != null && newPassword.length() != 0)
      {
        try
        {
          uRemote.changePassword(individualId, oldPassword, newPassword);
        } catch (UserException ue) {
          if (ue.getExceptionId() == UserException.COULDNOT_CHANGE_PASSWORD)
          {
            allErrors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.freeForm", 
                "Error while updating login information, " + ue.getExceptionDescription()));
            saveErrors(request, allErrors);
          } else {
            ue.printStackTrace();
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
      ContactFacadeHome cfh = (ContactFacadeHome)CVUtility.getHomeObject("com.centraview.contact.contactfacade.ContactFacadeHome", "ContactFacade");
      ContactFacade remote = (ContactFacade)cfh.create();
      remote.setDataSource(dataSource);
      IndividualVO individualVO = new IndividualVOX(form, request, dataSource);
      if (typeOfSave.equals("save"))
      {
        try {
          remote.updateIndividual(individualVO, individualId);
          } catch (Exception e) {
            logger.error("[execute] Exception thrown.", e);
            throw new ServletException(e);
          }
        request.setAttribute("TYPEOFOPERATION", "EDIT");
      }
      forward = new ActionForward(mapping.findForward(FORWARD_save).getPath(), false);  
      request.setAttribute("TYPEOFSUBMODULE", AdminConstantKeys.PREFERENCEPAGE);
    } catch (Exception e) {
      logger.error("[execute] Exception thrown.", e);
      throw new ServletException(e);
    }