contract Ownable {
  address public owner;
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  function Ownable() {
    owner = msg.sender;
  }

  /**
  * This contract only defines a modifier but does not use it
  * it will be used in derived contracts.
  * The function body is inserted where the special symbol
  * "_;" in the definition of a modifier appears.
  * This means that if the owner calls this function, the
  * function is executed and otherwise, an exception is  thrown.
  */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
  * @dev Allows the current owner to transfer control of the contract to a newOwner.
  * @param newOwner The address to transfer ownership to.
  */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}
/**
 * @dev simple own functions
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
function transferOwnership(address newOwner) onlyOwner public {
  require(newOwner != address(0));
  OwnershipTransferred(owner, newOwner);
  owner = newOwner;
}

/**
 * @dev Allows the current owner to transfer control of the contract to a newOwner.
 * @param newOwner The address to transfer ownership to.
 */