Let's assume an advertising directory for a resort city, or something like a national park. Let's also assume there are a number of businesses nearby that are advertising in the directory, as follows. (i) BBB (Best Bed & Breakfast). They provide lodging, food, and visitors can rent games from them. (ii) Mark's. This is a gas station / grocery / car repair shop business, not unusual for a small resort town. Mark's business also rents skis. (iii) Susie's Bar. The bar provides food and entertainment. Susie's establishment also provides tours during the week-end. (iv) Jerry's Pizza & Ski. Jerry delivers pizza on demand. He also provides ski rentals. (v) ATV Rentals. This business does one thing only, ATV rentals. Given all the above, it may make sense to have an advertising directory with the following structure Home Lodging B&B Food Resturants/Bars Food Delivery B&B Entertainment Bars Game Rentals Activities Tours Rentals Skis ATVs Games Other Car Repair Gas Stations Alright, so here is where the various businesses may want to be listed. BBB: Home > Food > B&B Home > Entertainment > Game Rentals Home > Lodging > B&B Home > Activities > Rentals > Games Mark's: Home > Other > Gas Stations Home > Other > Car Repair Home > Food > Groceries Home > Activities > Rentals > Skis Susie's Bar: Home > Food > Restaurants/Bars Home > Entertainment > Bars Home > Activities > Tours Jerry's Pizza & Ski: Home > Food > Delivery Home > Activities > Rentals > Skis ATV Rentals: Home > Activities > Rentals > ATVs The basic_listing_price includes one entry in the directory in the category > ... > subcategory choice of the advertiser. For example BBB may pay the basic_listing_price to be listed under Home > Lodging > B&B This listing will be only displayed to users who navigate all the way down to Home > Lodging > B&B Each advertiser can buy additional (basic) listing for a set price, "additional_listing_price", per listing. For example BBB can also buy the following additional listings: Home > Entertainment > Game Rentals Home > Lodging > B&B Home > Activities > Rentals > Games At this point they would be paying basic_listing_price + 3 * additional_listing_price for all their listings. Advertisers can buy one or more category sponsorships on top of their existing basic listing(s), for a set price per each category, let's call it "category_sponsorship_price". A category sponsorhip means two things: (i) an enhanced listing that includes features not available in the basic listing, such as a logo, and (ii) the said listing will be displayed as a "Featured Advertiser" throughout the category. For example, BBB may decide to buy a category sponsorship for the "Lodging" category. This means the BBB listing will be displayed *everywhere* under Home > Lodging, not just under Home > Lodging > B&B which is where their purchase of an additional (basic) listing would warrant it. There is a limit to how many advertisers can sponsor a category, "max_sponsors_per_category". Finally, each advertiser can buy a home-page sponsorhip by paying the home_page_sponsorship_price An advertiser who buys such a sponsorship will have their enhannced listing displayed as a "Featured Advertiser" on the home page. There is a limit to how many advertisers can buy a home-page sponsorship, "max_sponsors_for_home_page". Notes (i) There are no pre-defined categories and sub-categories. The directory starts as a clean slate to which the admin can add anything they want. Future possible enhancements (i) Be able to specify the order in which catgories are displayed in the navbar. The simplest is to do it alphabetically, but we may want to be able to just define the ordering.