contract JointOwnable is Ownable {

  event AnotherOwnerAssigned(address indexed anotherOwner);

  address public anotherOwner;

  /**
   * @dev Throws if called by any account other than the owner or anotherOwner.
   */
  modifier eitherOwner() {
    require(msg.sender == owner || msg.sender == anotherOwner);
    _;
  }

  /**
   * @dev Allows the current owner to assign another owner.
   * @param _anotherOwner The address to another owner.
   */
  function assignAnotherOwner(address _anotherOwner) onlyOwner public {
    require(_anotherOwner != 0);
    AnotherOwnerAssigned(_anotherOwner);
    anotherOwner = _anotherOwner;
  }

}
/**
 * @title JointOwnable
 * @dev Extension for the Ownable contract, where the owner can assign another address
 *  to manage some functions of the contract, using the eitherOwner modifier.
 *  Note that onlyOwner modifier would still be accessible only for the original owner.
 */
function assignAnotherOwner(address _anotherOwner) onlyOwner public {
  require(_anotherOwner != 0);
  AnotherOwnerAssigned(_anotherOwner);
  anotherOwner = _anotherOwner;
}

/**
 * @dev Allows the current owner to assign another owner.
 * @param _anotherOwner The address to another owner.
 */