function createTokens() isUnderHardCap payable {
    require(privatePlacementIsOn);
    uint valueWEI = msg.value;
    uint tokens = rate.mul(msg.value).div(1 ether);
    if (token.totalSupply() + tokens > hardcap){
      tokens = hardcap - token.totalSupply();
      valueWEI = tokens.mul(1 ether).div(rate);
      token.mint(msg.sender, tokens);
      uint change = msg.value - valueWEI;
      bool isSent = msg.sender.call.gas(3000000).value(change)();
    require(isSent);
    } else {
      token.mint(msg.sender, tokens);
    }
    balances[msg.sender] = balances[msg.sender].add(valueWEI);
  }