contract XcertUpdateProxy is
  Abilitable
{

  /**
   * @dev List of abilities:
   * 2 - Ability to execute create.
   */
  uint8 constant ABILITY_TO_EXECUTE = 2;

  /**
   * @dev Updates imprint of an existing Xcert.
   * @param _xcert Address of the Xcert contract on which the update will be perfomed.
   * @param _id The Xcert we will update.
   * @param _imprint Cryptographic asset imprint.
   */
  function update(
    address _xcert,
    uint256 _id,
    bytes32 _imprint
  )
    external
    hasAbilities(ABILITY_TO_EXECUTE)
  {
    XcertMutable(_xcert).updateTokenImprint(_id, _imprint);
  }

}
/**
 * @title XcertUpdateProxy - updates a token on behalf of contracts that have been approved via
 * decentralized governance.
 * @notice There is a possibility of unintentional behavior when token imprint can be overwritten
 * if more than one claim is active. Be aware of this when implementing.
 */
function update(
  address _xcert,
  uint256 _id,
  bytes32 _imprint
)
  external
  hasAbilities(ABILITY_TO_EXECUTE)
{
  XcertMutable(_xcert).updateTokenImprint(_id, _imprint);
}

/**
 * @dev Updates imprint of an existing Xcert.
 * @param _xcert Address of the Xcert contract on which the update will be perfomed.
 * @param _id The Xcert we will update.
 * @param _imprint Cryptographic asset imprint.
 */