contract Nutz {


  // returns balances of active holders
  function balanceOf(address _owner) constant returns (uint);

  function totalSupply() constant returns (uint256);

  function activeSupply() constant returns (uint256);

  // return remaining allowance
  // if calling return allowed[address(this)][_spender];
  // returns balance of ether parked to be withdrawn
  function allowance(address _owner, address _spender) constant returns (uint256);

  // returns either the salePrice, or if reserve does not suffice
  // for active supply, returns maxFloor
  function floor() constant returns (uint256);

  // returns either the salePrice, or if reserve does not suffice
  // for active supply, returns maxFloor
  function ceiling() constant returns (uint256);

  function powerPool() constant returns (uint256);


  function _checkDestination(address _from, address _to, uint256 _value, bytes _data) internal;



  // ############################################
  // ########### ADMIN FUNCTIONS ################
  // ############################################

  function powerDown(address powerAddr, address _holder, uint256 _amountBabz) public ;


  function asyncSend(address _pullAddr, address _dest, uint256 _amountWei) public ;


  // ############################################
  // ########### PUBLIC FUNCTIONS ###############
  // ############################################

  function approve(address _spender, uint256 _amountBabz) public;

  function transfer(address _to, uint256 _amountBabz, bytes _data) public returns (bool);

  function transfer(address _to, uint256 _amountBabz) public returns (bool);

  function transData(address _to, uint256 _amountBabz, bytes _data) public returns (bool);

  function transferFrom(address _from, address _to, uint256 _amountBabz, bytes _data) public returns (bool);

  function transferFrom(address _from, address _to, uint256 _amountBabz);

  function () public payable;

  function purchase(uint256 _price) public payable;

  function sell(uint256 _price, uint256 _amountBabz);

  function powerUp(uint256 _amountBabz) public;

}
/**
 * Nutz implements a price floor and a price ceiling on the token being
 * sold. It is based of the zeppelin token contract.
 */
function ceiling() constant returns (uint256);

// returns either the salePrice, or if reserve does not suffice
// for active supply, returns maxFloor