contract Haltable is Ownable {
  bool public halted;

  modifier stopInEmergency {
    require(!halted);
    _;
  }

  modifier onlyInEmergency {
    require(halted);       
    _;
  }

  /// called by the owner on emergency, triggers stopped state
  function halt() external onlyOwner {
    halted = true;
  }

  /// called by the owner on end of emergency, returns to normal state
  function unhalt() external onlyOwner onlyInEmergency {
    halted = false;
  }
}
/// @title Haltable contract - abstract contract that allows children to implement an emergency stop mechanism.
/// @author dev@smartcontracteam.com
/// Originally envisioned in FirstBlood ICO contract.
function halt() external onlyOwner {
  halted = true;
}

/// called by the owner on emergency, triggers stopped state