i make macaroni and cheese by essentially making a cheese fondue and adding noodles. it's awesome. here are the elements:

1 lb sharp cheese.

--usually, for me, the sharpest cheddar you can find. some of it could be smoked, also. gruyere and gouda, the latter of which is also good smoked, would be good stand-ins.

1 12oz bottle GOOD beer:

--i used to use goose island oatmeal stout. i have also used other, lighter beers, particularly red ales. ipa could be interesting, but i've never done it because i like to drink ipa too much to waste it on cooking. whatever it is, it needs to have FLAVOR.

about 2 cloves fresh garlic

1 small onion, or half of a big one.

--preferably a spanish or yellow onion. white is probably fine; sweet/vidalia onion is boring, and a red onion is too pungent. a tablespoon of onion powder is a reasonable alternative.

spices.

--currently i use marjoram. i have, in the past, used paprika. i also crack black pepper into it at the end. some salt might be good, but i usually find it okay just to salt the pasta water.

flour.

--this is used to thicken the final product; white works fine; whole wheat has seemed to be a little bit more robust but it could be my imagination.

olive oil.

pasta.

--this needs to have some kind of a fold or tubular structure so that cheese will get all up inside it and be awesome (shells are best in my experience).

so, the itemized recipe for my latest version would be as follows (this is the basic procedure no matter what ingredients i substitute):

heat olive oil in a large (4qt) saucepan, then add onions and garlic. sauté until the garlic starts to brown. pour in the beer and make sure the garlic and onions are scraped off the bottom of the pan.

bring beer to a low boil and begin adding the cheese slowly. add a hefty pinch, allow it to melt, and repeat until about half the cheese is gone. add marjoram. if you are substituting onion powder, add that now as well. now is also a good time to put the pasta water on to boil; be sure to add the salt when you do so. now continue adding cheese by the same process until it's gone.

once all cheese is into the mixture, thicken by adding flour--throw a good dusting on top of the mix, then stir it in vigorously to make sure it doesn't clump. repeat until desired thickness is achieved, sort of like lumpy Velveeta. if you've ever had a good cheese fondue, that's exactly what you're going for. it should be thin enough to pour, but thick enough that it's definitely a homogenous sauce and not beer with some melted cheese in it. crack some pepper over the top and stir it in (to taste).

keep the sauce on low heat and keep stirring (otherwise it will darken and stick to the bottom; for this reason, i also highly recommend using the heaviest, highest-quality pot you can procure). once the pasta is cooked, drain and add to the sauce in the pan. stir until the pasta is coated. enjoy!