@Override
  public Serializable execute(final PrincipalActionContext inActionContext)
      throws ExecutionException {
    SetTabOrderRequest currentRequest = (SetTabOrderRequest) inActionContext.getParams();

    Person person = personMapper.findByAccountId(inActionContext.getPrincipal().getAccountId());

    List<Tab> tabs = person.getTabs(currentRequest.getTabType());

    // Find the tab to be moved
    int oldIndex = findTabIndex(tabs, currentRequest.getTabId());

    Tab movingTab = tabs.get(oldIndex);

    // move the tab
    tabs.remove(oldIndex);
    tabs.add(currentRequest.getNewIndex(), movingTab);

    personMapper.flush();

    return Boolean.TRUE;
  }