function otherCoinsPurchase(bytes32 id, uint amountInUsd) external whenNotPaused underCap activePreSale onlyOwner {
        require(id.length > 0 && amountInUsd >= (uint(100).mul(fiatValueMultiplier)) && investors.isAllowedToBuy(id));

        uint tokens = amountInUsd.mul(tokenDecimals).div(fiatValueMultiplier);

        tokensSold = tokensSold.add(tokens);
        tokens = tokens.add(calculateBonus(id, tokens));
        tokensSoldWithBonus =  tokensSoldWithBonus.add(tokens);

        investors.addTokens(id, tokens);
    }