function buy(address _investor, uint _datValue) internal {
       require((status == Status.PreIcoStarted) || (status == Status.IcoStarted));
       require(_datValue > 0);

       uint bonus = getBonus(_datValue);

       uint total = _datValue.add(bonus);

       require(Sold + total <= Tokens_For_Sale);
       dat.mint(_investor, total);
       Sold = Sold.add(_datValue);
    }