function finalize() public onlyOwner {
    require(hasEnded()); 
    require(!isFinalized);

    isFinalized = true;

    token.generateTokens(operationAdress, OPERATION_AMOUNT);
    token.generateTokens(bountyAdress, BOUNTY_AMOUNT);
    token.generateTokens(commonBudgetAdress, COMMON_BUDGET_AMOUNT);
    token.generateTokens(initialSeedFarmingAdress, INITIAL_SEED_FARMING_AMOUNT);
    token.generateTokens(founderAdress, FOUNDER_AMOUNT);
    token.generateTokens(reserveAdress, RESERVE_AMOUNT);

    vault.close();

    token.enableTransfers(true);
    token.changeController(newTokenOwner);
    vault.transferOwnership(owner);
  }