how can i put this in a flowchart form? need for my project and where will i put all the void?

#include<stdio.h>
#include<time.h>
#include<process.h>
#include<string.h>
#include<conio.h>
#include<dos.h>

/*Placement*/
void order();
void lo();
char *date;
/*header*/
char hdr[]="\t\t\t\t    Pizza Hut\n\t\t\t\t  Billing System\n\t\t\t   Philippines Food Corporation\n";
/*opening*/
void main()
{
clrscr();
int choice;
printf("                                    ===                            \n");
printf("                                  ========                         \n");
printf("                                ==============                     \n");
printf("                             ====================                  \n");
printf("                           =========================               \n");
printf("                       ===================================         \n");
printf("                  =============================================    \n");
printf("              =====================================================\n\n\n");
printf("\t  ========   ==                          ==    ==            ==   \n");
printf("\t  ==     ==  ==                          ==    ==            ==   \n");
printf("\t  ==     ==                              ==    ==            ==   \n");
printf("\t  ==     ==  ==  ======  ====== ======   ========  ==   == ====== \n");
printf("\t  ========   ==     ==      ==      ==   ==    ==  ==   ==   ==   \n");
printf("\t  ==         ==    ==      ==   ======   ==    ==  ==   ==   ==   \n");
printf("\t  ==         ==   ==      ==    =   ==   ==    ==  ==   ==   ==   \n");
printf("\t  ==         ==  ======  =====  ======   ==    ==  =======   ==   \n\n\n");
printf("\t\t\t     [ 1 ] - Make an order.\n");
printf("\t\t\t     [ 2 ] - Exit.\n\n");
printf("\t\t\t     Enter your choice:  ");
scanf("%d",&choice);
/*declaratio*/
    switch (choice)
    {
    case 1:order();
    case 2:exit(1);
    }
}
        void order()
        {
        char name[25]; char d, dt;
        int choose, b, payment, i, ssl=0, bfl=0, s=0, pc=0, coker=0, cokel=0, itr=0, itl=0, minr=0, minl=0;
        float c, e=0, f, orig, total=0, vat, total_vat=0, change, op=0, money;
/*name*/
        printf("\n\t\t\t\tName: ");
        scanf("%s",&name);
        printf("\n\n\n\t\t\t\t    Thank you\n\t\t\t\tProcessing data...");
        delay(2500);
        clrscr();
/*menu*/
        menu:
        clrscr();
        printf("%s",hdr);
        printf("\n================================================================================");
        printf("\t\t\t\t       MENU\n");
        printf("================================================================================");
        printf("\n\tCode:\tPizza flavors:  \t       Price\t\t\n");
        printf("\t(1)  \t\tHawaiian Supreme       \tPhp250.00\t\t\n");
        printf("\t(2)  \t\tCheesy Pepperoni       \tPhp275.00\t\t\n");
        printf("\t(3)  \t\tMeat Lovers Pizza      \tPhp260.00\t\t\n");
        printf("\t(4)  \t\tBacon Supreme          \tPhp290.00\t\t\n");
        printf("\t(5)  \tDrinks available:\n\t\t\t>Coke\n\t\t\t>Iced Tea\n\t\t\t>Mineral Water\n\n");
        printf("================================================================================\n");
        printf("Press your Order:\t");
        scanf("%d",&choose);
        printf("\n===============================================================================\n");
/*order*/
            switch(choose)
            {
            case 1:
            {
            printf("\n\tHawaiian Supreme (Php250.00 each)\n\tHow many do you want?:\t");
            scanf("%d",&b);
            orig=250;
/*computation*/
            vat=(b*orig)*.10;
            e=vat;
            ssl=ssl+b;
            f=b*orig;
            c=b*orig;
            total+=c;
            total_vat+=e;
            op+=f;
            printf("\n\tHawaiian Supreme = Php%.2f\n",c);
            printf("\n=============================================================================\n");
            printf("\n\n\t\t\t\tTotal price:\tPhp%.2f",total);
            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
            d=getche();
            choice:
/*dinein/takeout*/
                switch(d)
                {
                    case 'y': case 'Y':
                    {
                    clrscr();goto menu;
                    }
                    case 'n': case 'N':
                    {
                    printf("\n\n\t(D/d) Dine in or (T/t) Take out?\n");
                    printf("\t\tYour choice: ");
                    scanf("%s",&dt);
                    printf("\n\n\t\t\t\tTHANK YOU:)\n\n\tOriginal Price:\t\t\t\tPhp%.2f\n\tVAT:\t\t\t\t\tPhp%.2f\n\n\tYour bill is:\t\t\t\tPhp%.2f",op-total_vat,total_vat,total);
                    money:
                    printf("\n\tYour Payment please:\tPhp");
                    scanf("%d",&payment);
/*payment*/
                        if(payment<total)
                        {
                        printf("\n\tPayment:\t\t\t\tPhp%d.00 'NOT ENOUGH PAYMENT",payment);
                        goto money;
                        }

                        else if(payment>=total)
                            {
                        printf("\n\tPayment: \t\t\t\tPhp%d.00",payment);
                        change=payment-total;
                        printf("\n\tChange:\t\t\t\t\tPhp%.2f",change);
                        printf("\n\n\t\t\t\tThank You! %s\n\t\t\tPress anykey to continue then wait\n\n\t\t\t   \n",name);
/*reciept*/
                        getche();
                        delay(2500);
                        clrscr();
                    clrscr();
                        printf("\t\t                     PIZZA HUT\n");
                        printf("\t\t                  Nasugbu, Batangas\n");
                        printf("\t\t            S#510005653 Complete survey\n");
                        printf("\t\t             at pizzahutfeedback.com.ph\n");
                        printf("\t\t              put valid code on reciept\n");
                        printf("\t\t             to claim FREE BANANA SPLIT\n");
                        printf("\t\t               TIN 006-021-629-001VAT\n");
                        printf("\t\t                 POS01 SN:41-F8477\n");
                        printf("\t\t                  OFFICIAL RECIEPT\n");
                        printf("\t\t                Philippine Pizza Inc.\n");
                        printf("\t\t                  POSID: 41-FB492\n");
                        struct date d;
                        getdate(&d);
                        time_t now=time(NULL);
                        struct tm *tm=localtime(&now);
                        printf("\t\t     OR.....:\t\t\t%d/%d/%d %d:%d\t\t\t",d.da_mon,d.da_day,d.da_year,tm->tm_hour,tm->tm_min);
                        if ((dt=='d')||(dt=='D'))
                        {printf("\t\t     TYPE...:\t\t\tDINE-IN\n");}
                        else if ((dt=='t')||(dt=='T'))
                        {printf("\t\t     TYPE...:\t\t\tTAKE-OUT\n");}
                        printf("\t\t     NAME...:\t\t\t%s\n",name);
                        printf("\t\t-------------------------------------------------------");

                            if(ssl>0)
                            {printf("\n\t\t%d Hawaiian Supreme   @250\t\t  %d.00",ssl, ssl*250);}
                            if(bfl>0)
                            {printf("\n\t\t%d Cheesy Pepperoni   @275\t\t  %d.00",bfl, bfl*275);}
                            if(s>0)
                            {printf("\n\t\t%d Meat Lovers Pizza  @260\t\t  %d.00",s, s*260);}
                            if(pc>0)
                            {printf("\n\t\t%d Bacon Supreme      @290\t\t  %d.00",pc, pc*290);}
                            if(coker>0)
                            {printf("\n\t\t%d   Coke (Regular)    @28\t\t  %d.00",coker, coker*28);}
                            if(cokel>0)
                            {printf("\n\t\t%d   Coke (Large)      @39\t\t  %d.00",cokel, cokel*39);}
                            if(itr>0)
                            {printf("\n\t\t%d   Iced Tea (Reg)    @28\t\t  %d.00",itr, itr*28);}
                            if(itl>0)
                            {printf("\n\t\t%d   Iced Tea (Large)  @39\t\t  %d.00",itl, itl*39);}
                            if(minr>0)
                            {printf("\n\t\t%d   Mineral Water (R) @20\t\t  %d.00",minr, minr*20);}
                            if(minl>0)
                            {printf("\n\t\t%d   Mineral Water (L) @27\t\t  %d.00",minl, minl*27);}
                        printf("\n\t\t-------------------------------------------------------\n");
                        printf("\n\t\t%d Item(s)       \t\t\t  %.2f",ssl+bfl+s+pc+coker+cokel+itr+itl+minr+minl,total);
                        printf("\n\t\t   TOTAL DUE     \t\t\t  %.2f",total);
                        printf("\n\t\t   CASH          \t\t\t  %d.00",payment);
                        printf("\n\t\t   CHANGE DUE    \t\t\t  %.2f",change);
                        printf("\n\t\t   VATable Sales \t\t\t  %.2f",op-total_vat);
                        printf("\n\t\t   VAT           \t\t\t  %.2f",total_vat);
                        }
                    break;}
                    default:
                    {
                    clrscr();
                    printf("\t\tPress(Y) for YES.\n\t\tPress(N) for NO.\n\t\t");
                    break;}
                }
            break;}


            case 2:
            {
            printf("\n\tCheesy Pepperoni (Php275.00 each)\n\tHow many do you want?:\t");
            scanf("%d",&b);
            orig=275;
            vat=(b*orig)*.10;
            e=vat;
            bfl=bfl+b;
            f=b*orig;
            c=b*orig;
            total+=c;
            total_vat+=e;
            op+=f;
            printf("\n\tCheesy Pepperoni = Php%.2f\n",c);
            printf("\n=============================================================================\n");
            printf("\n\n\t\t\t\tTotal Price =\tPhp%.2f",total);
            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
            d=getche();
            goto choice;
            }

            case 3:
            {
            printf("\n\tMeat Lovers Pizza (Php260.00 each)\n\tHow many do you want?:\t");
            scanf("%d",&b);
            orig=260;
            vat=(b*orig)*.10;
            e=vat;
            s=s+b;
            f=b*orig;
            c=b*orig;
            total+=c;
            total_vat+=e;
            op+=f;
            printf("\n\tMeat Lover Pizza = Php%.2f\n",c);
            printf("\n=============================================================================\n");
            printf("\n\n\t\t\t\tTotal price of your order=\tPhp%.2f",total);
            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
            d=getche();
            goto choice;
            }
            case 4:
            {
            printf("\n\tBacon Supreme (Php290.00 each)\n\tHow many do you want?:\t");
            scanf("%d",&b);
            orig=290;
            vat=(b*orig)*.10;
            e=vat;
            pc=pc+b;
            f=b*orig;
            c=b*orig;
            total+=c;
            total_vat+=e;
            op+=f;
            printf("\n\tBacon Supreme = Php%.2f\n",c);
            printf("\n=============================================================================\n");
            printf("\n\n\t\t\t\tTotal price of your order=\tPhp%.2f",total);
            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
            d=getche();
            goto choice;
            }

            case 5:
            {
            drinks:
            printf("\n\tHere is our Drinks:\n\t\tPress (1) for Coke:\n\t\tPress (2) for Iced Tea:\n\t\tPress (3) for Mineral water:\n>");
            scanf("%d",&i);
                switch(i)
                {
                    case 1:
                    {
                    coke:
                    printf("\n\tYou choose COKE.\n\t\tPress (R) for Regular.\n\t\tPress (L) for Large.\n>");
                    d=getche();
                        switch(d)
                        {
                            case 'r': case'R':
                            {
                            printf("\n\tRegular Coke worth Php28.00\n\tHow many do you want?\n>");
                            scanf("%d",&b);
                            orig=28;
                            vat=(b*orig)*.10;
                            e=vat;
                            coker=coker+b;
                            f=b*orig;
                            c=b*orig;
                            total+=c;
                            total_vat+=e;
                            op+=f;
                            printf("\n\tOrder for Reg. Coke costs = Php%.2f.\n",c);
                            printf("\n=============================================================================\n");
                            printf("\n\n\t\t\t\tTotal =\tPhp%.2f",total);
                            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
                            d=getche();
                            goto choice;
                            }
                            case 'l': case 'L':
                            {
                            printf("\n\tLarge Coke worth Php39.00\n\tHow many do you want?.\n>");
                            scanf("%d",&b);
                            orig=39;
                            vat=(b*orig)*.10;
                            e=vat;
                            cokel=cokel+b;
                            f=b*orig;
                            c=b*orig;
                            total+=c;
                            total_vat+=e;
                            op+=f;
                            printf("\n\tOrder for Large Coke costs = Php%.2f.\n",c);
                            printf("\n=============================================================================\n");
                            printf("\n\n\t\t\t\tTotal =\tPhp%.2f",total);
                            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
                            d=getche();
                            goto choice;
                            }
                            default:
                            {
                            clrscr();
                            printf("\n\tPlease follow the instruction below\n");
                            goto coke;
                            }
                        }

                    case 2:
                    {
                    iced_tea:
                    printf("\n\tYou choose ICED TEA.\n\t\tPress (R) for Regular.\n\t\tPress (L) for Large.\n>");
                    d=getche();
                        switch(d)
                        {
                            case 'r': case 'R':
                            {
                            printf("\n\tRegular Iced Tea worth Php28.00\n\tHow many do you want?\n>");
                            scanf("%d",&b);
                            orig=28;
                            vat=(b*orig)*.10;
                            e=vat;
                            itr=itr+b;
                            f=b*orig;
                            c=b*orig;
                            total+=c;
                            total_vat+=e;
                            op+=f;
                            printf("\n\tOrder for Reg. Iced Tea costs = Php%.2f\n",c);
                            printf("\n=============================================================================\n");
                            printf("\n\n\t\t\t\tTotal =\tPhp%.2f",total);
                            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
                            d=getche();
                            goto choice;
                            }
                            case 'l': case 'L':
                            {
                            printf("\n\tLarge Iced Tea worth Php39.00\n\tHow many do you want?\n>");
                            scanf("%d",&b);
                            orig=39;
                            vat=(b*orig)*.10;
                            e=vat;
                            itl=itl+b;
                            f=b*orig;
                            c=b*orig;
                            total+=c;
                            total_vat+=e;
                            op+=f;
                            printf("\n\tOrder for Large Iced tea costs = Php%.2f\n",c);
                            printf("\n=============================================================================\n");
                            printf("\n\n\t\t\t\tTotal =\tPhp%.2f",total);
                            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
                            d=getche();
                            goto choice;
                            }
                            default:
                            {
                            clrscr();
                            printf("\n\tPlease look at the instruction below.\n");
                            goto iced_tea;
                            }
                        }
                    case 3:
                    {
                    mineral:
                    printf("\n\tYou choose MINERAL WATER.\n\t\tPress (R) for Regular.\n\t\tPress (L) for Large.\n>");
                    d=getche();
                        switch(d)
                        {
                            case 'r': case 'R':
                            {
                            printf("\n\tRegular Mineral worth Php20.00\n\tHow many do you want?\n>");
                            scanf("%d",&b);
                            orig=20;
                            vat=(b*orig)*.10;
                            e=vat;
                            minr=minr+b;
                            f=b*orig;
                            c=b*orig;
                            total+=c;
                            total_vat+=e;
                            op+=f;
                            printf("\n\tOrder for Reg. Mineral costs = Php%.2f\n",c);
                            printf("\n=============================================================================\n");
                            printf("\n\n\t\t\t\tTotal =\tPhp%.2f",total);
                            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
                            d=getche();
                            goto choice;
                            }
                            case 'l': case 'L':
                            {
                            printf("\n\tLarge Mineral worth Php27.00\n\tHow many do you want?\n>");
                            scanf("%d",&b);
                            orig=27;
                            vat=(b*orig)*.10;
                            e=vat;
                            minl=minl+b;
                            f=b*orig;
                            c=b*orig;
                            total+=c;
                            total_vat+=e;
                            op+=f;
                            printf("\n\tOrder for Large Mineral costs = Php%.2f\n",c);
                            printf("\n=============================================================================\n");
                            printf("\n\n\t\t\t\tTotal =\tPhp%.2f",total);
                            printf("\n\n\tWould you like to make another order?\n\n\t\t(Y) for YES.\n\t\t(N) for NO.\n\t\tYour choice: ");
                            d=getche();
                            goto choice;
                            }
                            default:
                            {
                            clrscr();
                            printf("\n\tPlease look at the instruction below.\n");
                            goto mineral;
                            }
                        }
                    break;}
                }
            break;}
            default:
            {
            clrscr();
            printf("\n\tPlease follow the instruction below.");
            goto drinks;
        }
}
}
}
getche();
}

Whow ... that is a lot of code to scan through !

First off ...

You must be using an ancient NON-standard C compiler !

The standard is: int main() ... i.e. main returns an int value

/*Placement*/
void order( void );
void lo( void );

/* ............. */

int main( void )
{
   /* your code goes here */
   return 0;
}

/* ............. */

Think of the logic flow ...

What do you do first ... then next ... then next ...

Are there any branches?
(You have many cases...)
If so ...
What are the conditions on any of the branches?

Are there any loops?
I see SEVERAL goto loops ... BETTER to re-code using ...

while( ... ) /* your big loop */
{  
   /*    */
   if( conditionA ) continue; /* go to top of while now */

   /*     */
}

Do you know how to pass in parameters to functions?

Do you know how functions can return a value (or values) ?

Using more functions to break up each little job into a well named function could be a big help to you to SEE the FLOW of the logic in the program.

Edited 1 Year Ago by David W

This little example, uses functions to help you see the logic flow:

typedef struct
{
    int item1;
    int item2;

    /* ... */
    int itemN;
} Order ;

const char* MENU = " ... stuff on menu ... ";

/* prototypes */
void initialOrder( Order* );  /* initial all to zero */
void showMenuFillOrder( Order* );
void showOrder( const Order* );
double getBill( const Order* );

int more( void ); /* asks if more, returns NO =0, YES = 1 */

int main( void )
{
    do
    {
        double bill;
        Order tmp;
        initialOrder( &tmp ); /* address passed in */

        showMenuFillOrder( &tmp );
        showOrder( &tmp );
        bill = getBill( &tmp );
        printf( "Your bill was: %.2f\n", bill );
    }
    while( more() );

    return 0;
}
/*  function def'ns follow here ... */

Edited 1 Year Ago by David W

This edit from part of your code above, may give you some further ideas to help you see how you you might break up the code into jobs (functions)... and thus make the logic flow easier to see ...

/* PizzaHut2.c */

#include <stdio.h>
#include <ctype.h> /* re. tolower */


/*header*/
const char* HEADER = "\t\t\t\t    Pizza Hut\n\t\t\t\t  Billing System\n\t\t\t   Philippines Food Corporation\n";


void showMenu1()
{
    printf("                                    ===                            \n");
    printf("                                  ========                         \n");
    printf("                                ==============                     \n");
    printf("                             ====================                  \n");
    printf("                           =========================               \n");
    printf("                       ===================================         \n");
    printf("                  =============================================    \n");
    printf("              =====================================================\n\n\n");
    printf("\t  ========   ==                          ==    ==            ==   \n");
    printf("\t  ==     ==  ==                          ==    ==            ==   \n");
    printf("\t  ==     ==                              ==    ==            ==   \n");
    printf("\t  ==     ==  ==  ======  ====== ======   ========  ==   == ====== \n");
    printf("\t  ========   ==     ==      ==      ==   ==    ==  ==   ==   ==   \n");
    printf("\t  ==         ==    ==      ==   ======   ==    ==  ==   ==   ==   \n");
    printf("\t  ==         ==   ==      ==    =   ==   ==    ==  ==   ==   ==   \n");
    printf("\t  ==         ==  ======  =====  ======   ==    ==  =======   ==   \n\n\n");
    printf("\t\t\t     [ 1 ] - Make an order.\n");
    printf("\t\t\t     [ 2 ] - Exit.\n\n");
}

const char* CHOICES[] = { "Hawaiian Supreme", "Cheesy Pepperoni", "Meat Lovers Pizza", "Bacon Supreme" };
const float PRICES[] = { 250, 275, 260, 290 };


void showMenu2()
{
    printf("\n================================================================================");
    printf("\t\t\t\t       MENU\n");
    printf("================================================================================");
    printf("\n\tCode:\tPizza flavors:  \t       Price\t\t\n");
    printf("\t(1)  \t\tHawaiian Supreme       \tPhp250.00\t\t\n");
    printf("\t(2)  \t\tCheesy Pepperoni       \tPhp275.00\t\t\n");
    printf("\t(3)  \t\tMeat Lovers Pizza      \tPhp260.00\t\t\n");
    printf("\t(4)  \t\tBacon Supreme          \tPhp290.00\t\t\n");
    /*printf("\t(5)  \tDrinks available:\n\t\t\t>Coke\n\t\t\t>Iced Tea\n\t\t\t>Mineral Water\n\n");*/
    printf("================================================================================\n");
}

void order();
void lo();
char *date;


/* handy utilities for many C student coding problems ... */
void flushStdin()
{
    if( getchar() != '\n' ) flushStdin();
}
int takeInChr( const char* msg )
{
    char chr;
    printf( msg ); fflush( stdout );
    chr = getchar();
    if( chr != '\n' ) flushStdin();
    return chr;
}
int more() /* defaults to 'true'/'yes'/'1' ... unless 'n' or 'N' entered */
{
    if( tolower( takeInChr( "More (y/n) ? " )) == 'n' ) return 0;
    /* else ... */
    return 1;
}
/* a simple student way to handle numeric input ...
   so program won't crash on bad input */
int takeInInt( const char* msg, int min, int max )
{
    int val = 0;

    printf( msg ); fflush( stdout );

    if( scanf( "%d", &val ) == 1 && getchar() == '\n' )
    {
        if( val >= min && val <= max ) return val;
        /* else ... if reach here ... */
        printf( "\nValid range here is %d..%d\n\n", min, max );
    }
    else
    {
        printf( "\nInteger input only here please ...\n" );
        flushStdin();
    }
    return takeInInt( msg, min, max );
}




int main()
{
    int choice, num;
    char buf[80];

    do
    {
        showMenu1();
        choice = takeInInt( "\t\t\t     Enter your choice:  ", 1, 2 );

        switch( choice )
        {
            case 1: /*order();*/ printf("Order ...\n");  break;
            case 2: return 0;
        }

        showMenu2();
        choice = takeInInt( "Enter item number (1..4):\t", 1, 4 );

        /* form prompt */

        sprintf( buf, "How many %s's: ", CHOICES[choice-1] );

        num = takeInInt( buf, 1, 100 );
        printf( "Your order: %d %s's ...\n\n", num, CHOICES[choice-1] );


        printf("\n===============================================================================\n");
    }
    while( more() );

    return 0;
}

A few questions that may help us help you:

  • Has the professor presented flowcharts (as opposed to more modern diagramming practices) as a regular part of designing programs?
  • Does the professor mandate the use of Turbo C++ as the compiler?
  • Is this course for the C++ language? The code given is more typical of C than of C++, so it may be that you have misunderstood which of the message boards you wanted.
  • If this is in fact meant to be C++ code, has your professor not taught about the C++ iostream methods at all, or are you forbidden to use them? Some hidebound professors teach C and call it C++, but it is important to understand the difference.
  • Did your professor actually teach and encourage the use of goto in regular code?

If the answer to any of these questions is 'yes', you should immediately quit the class and encourage everyone else you can to do so as well, then petition the university to dismiss the professor in question on the grounds of incompetence. The issue of using goto is particularly damning, as the dangers of regular use of that construct were well understood more than forty years ago - using goto in modern software is so inappropriate that it is a once-in-a-career situation for most developers to find themselves needing to use it explicitly, and then only if all other practical alternatives have been exhausted.

Edited 1 Year Ago by Schol-R-LEA

Comments
Nice!
This article has been dead for over six months. Start a new discussion instead.