contract TransferableToken is Ownable {
  event TransferOn();
  event TransferOff();

  bool public transferable = false;

  /**
   * @dev Modifier to make a function callable only when the contract is not transferable.
   */
  modifier whenNotTransferable() {
    require(!transferable);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is transferable.
   */
  modifier whenTransferable() {
    require(transferable);
    _;
  }

  /**
   * @dev called by the owner to enable transfers
   */
  function transferOn() onlyOwner whenNotTransferable public {
    transferable = true;
    emit TransferOn();
  }

  /**
   * @dev called by the owner to disable transfers
   */
  function transferOff() onlyOwner whenTransferable public {
    transferable = false;
    emit TransferOff();
  }

}
/**
 * @title TransferableToken
 * @dev Base contract which allows to implement transfer for token.
 */
function transferOn() onlyOwner whenNotTransferable public {
  transferable = true;
  emit TransferOn();
}

/**
 * @dev called by the owner to enable transfers
 */