Dual Extruder / Dual Material Makerbot

by ScribbleJ, published

Dual Extruder / Dual Material Makerbot by ScribbleJ Feb 22, 2011

Featured Thing!

1 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps



Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag


Thing Statistics

18405Views 4258Downloads


This is going to be a reaaaal long one, folks. Better buckle up your thingibelts.

I believe this project is complete. There are workable, though probably not ideal, solutions to all major problems. The code and mount are both perfectly usable.

Youtube videos availabe at:
New! http://www.youtube.com/watch?v=XafKYIxlgBk

For people who just want the short version to go with the photos: Of course when I thought about what to print first, I thought the classic 20mm cube, but in a checkerboard pattern.

Setting the head offsets in the software exactly is important, and not difficult, but I couldn't dial it in during the course of this project as every time I'd set it I'd change something to unset it again. That's the only reason many of the prints are overlapping in odd ways.

Any ooze tends to accumulate at the offset position and eventually get rolled into the model, making a mess. The final update to the script has solved this with some ooze-controlling reversal, which I didn't bother to get dialed in exactly before closing this file. :)


On Friday, it struck me I had a MK5 hot end just sitting here in a box, unusued, and I thought -- wouldn't two extruders in one machine be a neat idea? You could print two colors together, or you could use one to print some kind of support material; who knows what that might be. I knew you could dissolve PLA with toxic chemicals, but I also knew I'd never be allowed to play with toxic chemicals; I'm not even really allowed to print ABS.

I decided I would have the entire project complete, from conception to completion, done by the end of the weekend. You might have noticed my rash of part releases.

Well, I missed it by /that/ much, but it turns out to be good news. MBI on Monday announced dissolvable plastic ( http://store.makerbot.com/makerbot-pva.html )... which means now we know what to use as support material. The timing could not be more perfect. In addition, this makes the perfect thing to do with your old MK5 once you also have a shiny new MK6... Or maybe you bought a third-party hot end, like one of the excellent ones from Makergear.com, and now you can get your old stock hot end out of its drawer and use it again.

Now, when I say completion, I don't mean this project is finished, oh no. There's a very long list of little things to fix or change, and a short list of big things to fix or change.


  • The bolts on the build platform mean your print area can be greatly reduced --
    -- SOLVED... switching to the ABP cures this problem neatly.
  • Need a brilliant way to assure both heads are on the same Z-plane physically.
    -- SOLVED... not exactly brilliant, but the new mount is easily adjustable.


  • It would be helpful to people who do not have the option of switching to the ABP to have a mount where the heads are aligned 90 degrees offset from this.
  • Some kind of quick-release mount for the second extruder would be nice. Maybe there would be a way to work Z-height adjustment into it.
    -- SOLVED: V2 mount is easy to remove and install separately.
  • The closer the two heads together can be brought together, the less loss of build area will happen, bolts or no bolts.
  • It should be theoretically possible to drive two heads from one EC; if I blow up my other MOSFET I may have to pursue this possibility myself. This would require some hacking of RepG at the least and probably the firmware too.
  • The software could use many improvements; what I've given here is a workable starting point to build from.


I nearly hit my goal of having it all wrapped up by the weekend. I missed it because the 608-based Wade's style extruder I built off the STLs I uploaded over the weekend: http://www.thingiverse.com/thing:6492 did not work. It wouldn't push plastic.

You might think that meant it worked OK, I just couldn't demo it, and you'd be right. At this point, I had two stepper extruders working in concert but I couldn't make a test print, because one wouldn't push plastic. I felt like I couldn't put up the thingiverse entry until I could make the thumbnail a two-tone print.

So, this set me back a whole day. Well, this, and the fact that I have to work for a living, still...

I decided the problem was the bolt I hobbed wasn't nearly as good as Makerbot's MK5 drive gear thingy: http://store.makerbot.com/mk5-drive-gear.html ... while the MBI delrin extruder is of questionable value, this gear is the /bomb/. I tried hobbing another bolt, but I just couldn't make one that worked.

An additional problem is that the design STLs I posted have the wrong value for the filament distance from the hobbed bolt, making it add a lot of friction and nearly impossible to get in the hole.

So I decided that other people would want to use it with the DC motor, and I might as well buckle down and replace my 2nd stepper extruder with a DC extruder, temporarily. I couldn't find a 606 bearing on such short notice, but I've seen plenty of people run without it, so I made do.

It turned out this introduced a new problem. While I was fortunate to find the MBI ReplicatorG and Firmware supported everything I wanted to do /already/, which was REALLY NICE, THANKS GUYS!! ... I found there was a bug or oversight in the drivers for the stepper extruder version; if you use them, they will just delete any commands that drive a DC motor. So if you have one of each like I do for the moment, it won't run the DC motor.

Fortunately, this was about a ten minute fix in the RepG code, which I'm getting all too familiar with. (Patch will be supplied below if it isn't already when I hit PUBLISH).

Next the DC motor stopped responding (probably just needed a reboot, honestly), and in my naieve efforts to fix it, the mosfet blew up, literally; photo attached. I couldn't get it to switch to the second mosfet in the legitimate fashion, RepG wouldn't recognize the extruder to set it's eeprom... So I hardcoded the change in a copy of the firmware and uploaded it - finally the DC motor was back online and I had only lost about two hours...

Once I finally got it all up and running, testing my software proved to have it's own fun points, too. First I got the offsets and everything all backwards, and nearly drove my print heads into the bolts many times. Once I finally got it completely sorted, the first test print I discovered a really fun thing -- if your print heads are off in the Z direction by a tiny amount, that's OK. But if the lower one prints last, it'll rip the tops off the taller one's print.
EDIT: I actually think the cause of the destroyed print in the photo and the other messy prints are all down to the shadow print/ooze that develops and tends to roll into the model. The latest version of the script provides ooze-combatance for this reason.

As you can see, I didn't find a way to measure my Y offset so I guessed 0 on the first print, the one with the missing tops, and I was wrong, so I adjusted it for the second print... in the wrong direction! Doh! It'll be fixed for any future photos, I hope. The X offset is easy enough to measure since that's the way the heads are aligned in my build. If you have the ABP, having them aligned in X like this is good 'cause then there are no worries about bolts AND you might be able to hack the ABP to get back any lost print area. It's a win-win.

But I'm not running the ABP right now, so I need to watch my bolts like a hawk and it would have been better if my mount has the heads aligned in Y instead of X - rotated 90 degrees.

UPDATE (2011-02-23):

I got one print off today before the DC motor stopped running. The LED on the mosfet comes on when I tell it to run, so I'm not sure what the problem could be. I still have the relay I built to run it on the Thing O Matic extruder controller, but it's on a cupcake EC and I'm surprised to find it fails there, too - have other people had that problem?

I also switched out my build platform so the bolts would run the other way.

I swapped in a different DC motor and it works, but the DC motor overall oozes much more and takes much longer to start again than the stepper motor, so the grey parts in my prints are coming out looking somewhat lousy.

Otherwise, you can see it's working well and I fixed my Y-offset by just adding 1/2 the difference between the top and bottom parts sizes to it.

Next I added springs to the front extruder, assuming I only need to be able to adjust one to match the fixed one. This helped my prints a lot -- part of the problem with the greyparts is they weren't getting good stick on the 1st layer. Now both materials are getting good stick. Changing out for the springs changed my X+Y offsets by a very small amount, but that's easy to measure using this test cube.

The springs seem like a workable solution, -- I'm surprised the thing is not wobbly, but I used very strong springs, so...

UPDATE (2011-02-24): Added new mount .STL; this one should be a good way to solve both the quick-remove problem and the z-alignment problem, at the cost of drilling 2-4 new holes into your stock acrylic bridge. I'm going to have to figure out how to get replacement lasercuts parts after these experiments are finalized, I bet.

Since the STLs aren't rendering here, you can see the new mount here: http://www.thingiverse.com/thing:6517 until I have a photo of the printed thing.

While adjusting my printer to print the part (I decided to lower the spring-loaded head down as low as I could to get the other out of the way, and just print in 1 material) I found there's an easy way to adjust the springs tension - while the end is cold and full of filament, simply turn the motor back a few steps (by hand?) and it will raise the end up, allowing you to easily twirl the nuts to your desired location, before lowering it back down. Youtube video here: http://www.youtube.com/watch?v=gJStB65cSvA

I am greatly looking forward to seeing the postman today, as he'll have my order from Makerbot with the dissolvable plastic, as well as the parts I will need to rebuild my stepper extruder properly, and eliminate the DC extruder.

I finished printing the new mount. Checking in the control panel after the print revealed to my pleasure that the /other/ extruder, the one I didn't use in the print, was at a nice cool 30degrees still.

I wonder if I should have designed the mount to use the existing bolts on the front of the bridge. I guess I'd like 4 bolts for it though, so this is probably OK, even if the other way means less destruction.

If the big 'shadows' on my dual-color prints didn't make it clear I'm not doing anything to combat ooze presently, the print of this new mount will...

UPDATE: (2011-02-25)

My box from Makerbot Industries showed up today. It had 4lbs of PVA, plus a handful of 606 bearings and those wonderful MK5 drive gears. So I rebuilt my second stepper extruder, and put on the new mount all at the same time.

The new mount works as advertised; it makes leveling much easier, and taking off the whole second extruder when you want to go back to 'normal' a snap. I recommend it. It also makes mounting everything a lot easier.

It does require you to drill 4 holes in your acrylic bridge. Drilling acrylic is supposed to be very tricky. I actually used a dremel instead of a drill, with a bit I dunno the name of, but I'll post a photo. I went slow, it cut like butter; I wasn't worried about cracking it at any point. My room does still have the faint aroma of my 8th grade shop class, where we all made acrylic salad spoons. Mom still uses it, 20 years later.

The only real problem I have remaining is the ooze creating a mess that frequently gets rolled into the model and turns it into a mess. Since I've got two functioning stepper extruders now, I'm working on additions to my combine script to handle reversing the filament feed in a sensible way when switching off heads. There will be a new version of the script up soon, and new photos.

If I solve the ooze issue to my satisfaction, I'll be ready to mark this WIP as done.

.... and I have now, in the latest version of the script. I'll write up full documentation under INSTRUCTIONS and call this finished.

Thanks for reading... and good luck with your dual-extruder printing!!

Once again, I owe thanks to everyone on IRC Freenode, especially Kliment this time for his encyclopedic knowledge of Gcodes. And thanks to RepG coders for having done most of the work. And thanks to my very patient fiance.



Until you're SURE of what you're doing, keep one hand on the power button and be thinking several Gcodes ahead of your printer at all times.

There's also a lot of wires going into and out of the area in this build, and if you're using a geared stepper setup like a Wade's you need to be super careful not to catch anything in your gears. It's happened to me... so do as I say and not as I do, and practice some cable management.

A good general way to save some headaches is to do your testing with your maximum z height set low, so the machine prints way up in the air. This'll let you eyeball it to see if it's going to smack some bolts when it gets going for real, and if your offsets are backwards, or such.


Mount two extruders in your machine physically. That's kind of a big first step. The mount I'm using is provided in STL below, and has been cleverly hidden inside the .scad file for this thing: http://www.thingiverse.com/thing:6517 since it was first published. I didn't think anyone would notice. :)

v2 of the mount requires you to drill four holes in your acrylic bridge. Just use the part itself as a template, and drill carefully. If you have a dremel, I suggest you use it instead. I took a photo of the dremel bit I used, which worked wonderfully, but I'm sure someone will tell me it was completely the wrong thing to use.

You will also need to move the bridge back a little, so the rear extruder is just about touching wood. Drill two new holes for the thumbscrews.

That's it; six drill holes... not very destructive, in my opinion.

Z-alignment is critical in this build. The slotted holes on the mount should help you get the heads to the same Z-height. I don't believe the springs I left on mine are necessary. My own experimentation shows that anything < 1 layer height difference is workable, but the closer you can get them to identical, the better your prints will look.

If you are using direct-drive motors like the MK5 DC motor or MK6 stepper, you may have some trouble getting the front motor to fit in the cupcake/ToM case. If you run into this problem, one easy solution is to print out a 1:1 gearing for the motor (perhaps using this: http://www.thingiverse.com/thing:6544 ) and a mount (maybe here? http://www.thingiverse.com/thing:6549 ) so you can mount the steppers like mine are, reversed. This /should/ allow plenty of clearance.

(Just a warning for anyone looking at my photos; these steppers ARE NOT STRONG ENOUGH; you should have something a little beefier than the stock Cupcake axis steppers I am using.)

You'll also (probably - not necessarily) need two extruder controllers. I'm using one from a cupcake, and one from a thing-o-matic. Surprisingly, this didn't complicate things at all.


Using a DC motor alongside the ToM 4-Axis stepper style DOES complicate things; if you want to do that you'll /need/ to use the patches to RepG I'll have uploaded below (at least until they are rolled into the main line). You probably don't need them if you're driving 2 steppers, 2 dc motors, or not using the ToM axis.

Otherwise, it's surprisingly easy. You first attach only ONE extruder controller to your machine, the one you want to be SECOND eventually. In RepG, choose the option to change the toolhead index, and set it to '1'.

If you have both ECs connected when you do that, it will set them both to '1' and you're no better off. You want one to be '0' and one to be '1'.

In your machines.xml file, you need to add a second tool. This is as easy as it looks; if you're using two steppers and have 1 already, just duplicate the tool line. If you have two dc motors and you're using 1 already, just duplicate the tool line. If you're doing a hybrid, steal the appropriate line from one of the existing configs. You do have to add one attribute to the XML; you have to add 'index="0"' to the first one and 'index="1"' to the second. I've uploaded my file here as an example; in the odd circumstance you have my same monster config, feel free to use it.

If you are using steppers and driving them on the ToM axis, remember to set one to 'b' and one to 'a', and add the relevant axis line above! If you are driving them off a cupcake EC or any other fashion you're already done.


So everything up to this point in this description was a lot of reading and making parts... but I didn't have to change a thing (except the DC/stepper patch). Someone at MBI or elsewhere considered that someone like me would want to do all this and thoughtfully made the software able to handle it.

There's just one part that has been missing, as far as I know. Once you have the machine and the firmware and the RepG all redy to drive the machine, you still need Gcode that knows how to handle two separate materials in one single print. Skeinforge uses STLs, which as far as I know don't even have the ability to represent two separate materials, so skeinforge hasn't even got the basic concepts necessary to handle this.

So I went outside the box.

I am providing a Perl script. It's YET ANOTHER language in the mix for people trying to understand all this. Skeinforge is Python, the firmware is C++, and RepG is Java. I guess I thought that wasn't enough! More honestly, parsing a lot of text like a .gcode file is what Perl was meant to do, so it's not a bad call. I can guarantee you someone will take the basic idea I've presented here and provide it in other languages - possible even eventually as a skeinforge plugin.


So this is the part I get all the credit for. My idea, Friday night, was that you could create an object with two different materials in whatever fashion you choose. If your CAD program supports it, go to it.


Both materials need to exist somewhere on the first layer. If that's not part of your design, you can just add the tiniest dot of the missing material, outside of the model on the platform someplace, and that'll satisfy the requirements. It might be nice in general if you made each head print a small crosshairs or something outside the model, so you satisfy the requirement of having them both print on the first layer, AND give people a chance to double-check their offsets and abort the print if they need fixing.

After the first layer, its fine if any layers have only 1 material.


When I say 'as normal' you probably do want to make a few changes:
a) (probably) Don't include your start.gcode - if you do, you can just take it out manually, that's fine.
b) Don't do anything that would move one around unless you move the other one the exact same amount... this probably rules out the 'center' and 'move' options in RepG and 'multiply' in Skeinforge, among others.
c) (probably) don't use wipe. You might use it on the 1st material to print if you want, using it on both would be a bad idea.


It will interleave the two files so it prints layer1 with toolhead 0, then layer1 with toolhead 1, then layer2 with toolhead 0, then layer2 with... you get the idea. Simple, stupid simple, yet it works. You give the script the X and Y offset between your heads, and it does the rest.

The script just outputs to STDOUT right now so you'll have to pipe it into a file to use... something like "combine.pl material1.gcode material2.gcode -1 41 > runthis.gcode" (probably works on Windows too ... if you can get Perl there in the first place? heckifIknow)

The latest version of the script has all the options in it commented so it should be easy to understand.


I've uploaded (the latest version of) mine, but you probably want to carefully think about each step and whether it makes sense for you. I know that one of my heads always reaches temperature before the other, so I've set it up to start just waiting on and begin printing with the one that takes longer, and assume the other one will be at temperature when the time comes.

Another reasonable option would be to wait on the first one before it starts printing the first layer, and then wait on the second one before it starts printing the first layer. Or just wait on the both together at the beginning, once. I find just waiting on the one that consistently takes longer is a fine way to go.

5) Load it up in RepG/Whatever and print.

After you have things dialed in, you can probably print with the same cavalier attitude you ever did. Before that, be cautious! Keep a hand on the power, make sure you know what you're doing!

All Apps

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

3D Print a wide range of designs with Treatstock. Easy to use tools to get the perfect result. The global 3D printing network that connects you with high-quality and fast working print services nea...

App Info Launch App
Comments deleted.

I still intend to share something really mindblowing using this technique. I still haven't even opened the PVA. I've been really busy - but more importantly, I totally ruined my "primary" MK5 for the moment; it's got a mess of plastic jammed in it that will not come out, and when I originally constructed it, the "anti-seize" paste that should have been included was a tube of thermal paste instead, so I just built it without. Now I /cannot/ get it apart to fix it.

But I can probably repair it with a torch, and whether that solves it or not, I've got some fancy new hotends on order from http://arcol.huarcol.hu - so sometime in the (near?) future I'll be getting back to this.

Dropped by the Chicago hackerspace this week, where they had a nice heat gun; a couple seconds of that on the hot end and it came right apart. Now it'll be a simple matter to rebuild.

this is some great work right here. Nicely done. As Eric said below all credit to the do'ers, I too have been thinking for ages about this.

Dissolvable support has got to be a great way to go.

This makes me think that with the small build area of the ToM, a dedicated double extruder with custom parts might be the way to go. I'm thinking of getting the nozzle holes very close together by having them in the same part with two melt cham
bers. The melt chambers could be angled so the feedstock in can be separated a lot more than the nozzle outputs.

Now I think a bit more (really must get that thinking step happening before the typing part kicks in), the two materials more than likely will need two different extrusion temperatures, so won't be able to share heaters/nozzle blocks. Could still have a nozzle and angled melt chamber design that has one flat side with the nozzle exit as close as possible to the flat side, then clamp the two nozzles together with an insulator plate in between.

2 melt chambers, 1 nozzle?

that might work...

Those are decent ideas. I actually think the 'ideal' mount would have 2-4 heads all in one heater, at the same temperature, to print colors. Then 1 extra head in it's own heater to print support. I ordered the parts I would need to build such a beast... when they arrive we'll find out if I'm actually capable of it.

I just wanted to check in to say it increasingly seems I'm not capable of it. :)

Great to see you pioneering this. I've been meaning to do this but all credits go to do'ers, not to planners :)

I hope to start building on your work soon!

What I learned today:

Z-height is super important and tricky. I'm still working out the springs.

Skeinforge will move a model that doesn't start at z=0 to z=0, so to skein a thing with none of one material on layer 1 you have to put a little bit of the material on layer 1... just a dot is enough.

The DC motor is t
he gray plastic. These prints make it pretty obvious how it lacks in comparison to a stepper, the transparent.

It's smarter to start both toolheads warming up, wait on the first one, then print with the first one. THEN wait on the second one, then print with the second one... new script will addr
ess this somehow; I'm manually editing gcode for now.

There's some gremlins in the system; for no discernable reason one of my heads stopped trying to keep itself heated in the middle of a print.

Also, having the bolts aligned in the same direction as the two print heads (i.e. using the ABP) takes a BIG load of worry off.

I've got a script for modding Gcode. It can be found here:


Its not very intuitive. It's going to get integrated into host eventually and we only really wrote it for my use. But it handles position offsets between the extruders, Has an idling temperature, and a running temperature so the extruder don't ooze everywhere.

I designed it to work with a paste
extruder and plastic one. So it might need a bit of modifying.

I like the idea of an idling temp, but do people's extruders really change temp that quickly? And isn't it a bother waiting for it to come back to temp?

It does slow things up alot, but I found it would ooze all over the place unless I did it. Also because of the oozing I found that I'd need to prime it before I start building again.

On the topic of build platform bolts being in the way:

What I'm doing right now is making a new HBP surface out of a small "sheet" of aluminium.
This surface will bolt onto the heater pcb (with some thermal compound inbetween) and then have the laser cut wooden peice underneath to mount to the y carrige normally.

The standard bolt heads are 3 - 3.5mm
tall so, I simply bought some 6mm thick 100x100mm aluminium, drilled 4 holes that line up with everything's existing bolt holes and either drilled another, wider hole, 4mm deep over the original holes, or just use a countersink bit to make a wider and deep enough gap.

Insert bolts so the heads si
t flush with the surface, fill in the space around the bolt head with thermal compound, cover in kapton tape and bob's your uncle.

The best part is, this still works with http://www.thingiverse.com/thing:6558http://www.thingiverse.com/thi...

Platform Leveling Trick
by haqnmaq

Why so thick? I was thinking the same thing, but changing to counter-sunk screws so they're flush, and around a 3mm thickness. 6mm seems like it might take longer to heat up or be more work... but I might be missing a trade-off in my thinking.

Of course I'm also wondering if the MB heated bed would heat the aluminum stock ok (i think so) or if going to a headed bed like Nophead has. Hmm. I better order some aluminum stock to do this.

I was thinking of some kind of metal plate to sit atop the bolts, but I've very little clue where to get metal to use for a plate and even less how to machine it. If this is a good way to go, Thingiverse could use a detailed writeup from you!

enco often has aluminum sheet for very cheap. If you keep an eye out they also pretty regularly offer free shipping on smaller orders too.


Aluminum cuts really nicely with just a jigsaw with a metal blade. It also files really nicely too.

I don't know if its much help for this, but I mounted my extruder on springs on my mendel multimaterial setup. That way I could adjust the Z height nice and easily.

I'm trying out some springs; it's much more stable than I would have thought given the way I've mounted them.

Looks awesome by the way :)

Thanks... and thanks! I'll have to think about how I could incorporate springs into a MK5 hot end. Do you have photos of your mendel springs setup?

Not to hand sorry. There are some pics of it in a report I had to write for uni. Its available here but its quite a big download:


Basically I have a mounting plate with three captive nuts arranged in a triangle. On the opposite side, I have the springs sandwiched between this plate and the extruder. I then have cap screws running the the extruder bracket, through the spri
ngs down into the nuts. So as you turn the cap screws the springs are compressed.

Mendel Multi Extruder Carriage

In ReplicatorG/scripts/switcheroo you'll find a script I wrote to switch between two DC extruders, one for support material, one for build material. It works by searching for the support flow rate of 510 (flow rate multiplier of 2) and replaces with a flow rate of 255 and the switching text. It works the same way while switching back to build material.

I think between my script and the more advanced script you made we have most of dual extrusion covered. Well done!

Incidentally, I didn't know RepG had scripts as such - thanks. That's possibly the right place for http://combine.plcombine.pl to end up in some form.

Yes, that's wonderful! I thought there might be an easy way to hack it in for use with SF's support option, if not for use with two-colors like my script allows. It's wonderful to hear you've already done it!

Looks like I'll be sleeping even less this week. Awesome.

if you had FLTTR i would flatter you

Freaking awsome !! 8-)

Nice work :-D

I really appreciate that, but I'm standing on the shoulders of giants here. The RepG and Makerbot Firmware developers did most of the work. The actual amount of code I had to put into this was probably less than 50 lines. And the community will - I hope - help pick it up from here! Not that I'm quitting or anything, beyond getting some sleep in the near future...

So my part was really quite small. :)

This is officially BLEEDING EDGE!

Yeah, you guys are officially BLEEDING EDGE, since you're on IRC, you've known about this since I thought of it on Friday. :)