function buy_the_tokens() {
    
    if (bought_tokens) return;
    
    
    if (this.balance < min_required_amount) throw;
    
    
    if (block.number < min_buy_block) throw;
    
    
    bought_tokens = true;
    
    
    contract_eth_value = this.balance;

    
    sale.transfer(contract_eth_value);
  }