contract Ownable {
  using SafeMath for uint256;
  address public owner;
 
  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }
 
  /**
   * @dev Throws if called by any account other than the owner.
   */
  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) public onlyOwner {
    require(newOwner != address(0));  // can't accidentally burn the entire contract
    owner = newOwner;
  }

  /**
   * @dev Allows the owner to withdraw the ether for conversion to USD to handle
   * tax credits properly.
   * Note: this function withdraws the entire balance of the contract!
   * @param destination The destination address to withdraw the funds to
   */
  function withdraw(address payable destination) public onlyOwner {
    require(destination != address(0));
    destination.transfer(address(this).balance);
  }

  /**
   * @dev Allows the owner to view the current balance of the contract to 6 decimal places
   */
  function getBalance() public view onlyOwner returns (uint256) {
    return address(this).balance.div(1 szabo);
  }

}
/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic
 * authorization control functions, this simplifies the implementation of
 * "user permissions".
 */
function withdraw(address payable destination) public onlyOwner {
  require(destination != address(0));
  destination.transfer(address(this).balance);
}

/**
 * @dev Allows the owner to withdraw the ether for conversion to USD to handle
 * tax credits properly.
 * Note: this function withdraws the entire balance of the contract!
 * @param destination The destination address to withdraw the funds to
 */