Trying an Azteeg X5 Mini on a Monoprice Maker Select (Wanhao Duplicator i3)

The first step of this process was to determine if an Azteeg X5 Mini would even work with an Monoprice Maker Select. We’ll find out by trying to run the printer with the board with minimal (ideally zero) modifications to both. This way, if an unsurmountable deal-breaker is encountered, everything can be restored to the way they were.

When the printer control box was opened, there was no visual indication what was emitting the smoke scent. I had expected to see some discoloration on the circuit board or component, but this is fine: it’s a good thing we’re taking on this project before anything goes seriously wrong.

MMS Brain 01 - Before

The upgrade was done incrementally. Connectors were moved over in associated groups and tested with each group. The first group to move over were the X and Y axis motors and associated homing switches. A ViKi 2 LCD display was borrowed for the duration of this test.

MMS Brain 02 - Incremental Move.jpg

One expected annoyance is that these two boards used different connectors. Fortunately they were the same pitch so most of the connectors could be persuaded to fit (even if not properly) for testing purposes. The only nontrivial electrical work was for our Z-axis. Prusa i3 style printers like this one have two Z-axis stepper motors driven in parallel, but Azteeg X5 mini only has a single Z-axis connector. This required soldering up an Y-connector to electrically connect the two motors in parallel.

Several items in Azteeg X5 Mini’s configuration had to be modified for this particular printer chassis. Number of steps per millimeter, how to properly interpret temperature readings, all fairly normal items for configuring a 3D printer. There were no deal-breakers which is great news.

At the end of the day, all connectors were (crudely) hooked up and printer configuration updated. Heating up the nozzle and print bed allowed verification of temperature control by double-checking their temperature readings using a separate temperature probe. And finally, it was time for a test print!

The test print showed that X/Y/Z axis are working correctly, but the print exhibited signs of under-extrusion so the extruder needs tuning. This is a minor flaw which means we’ve successfully confirmed that we can use the Azteeg X5 Mini in this printer.

Next task: replace crude connections with proper connectors, and find a way to physically mount the Azteeg X5 Mini in this printer.

Smell of Smoke Prompts Monoprice Maker Select (Wanhao Duplicator i3) Upgrade to Panucatt Azteeg X5 Mini

Making parts around the clock for Sawppy was a stressful tour of duty for my 3D printers. Yesterday I described how my Monoprice Maker Ultimate burned out its relay, the second one since I bought the printer. Fixing it and bringing it back online gave me two printers… until the Monoprice Maker Select started smelling like overstressed electronics upon print bed warmup.

My first round with this product ended with a room filled with smoke. Back then I didn’t know enough about printer internals to diagnose what went wrong, I just sent the whole thing back on the generous Monoprice warranty. (For store credit that I used towards the Ultimate.) This time around I know a bit more, enough to understand what people are talking about on the forums. The controller board on these machines have some noted weaknesses and smokey smell is the least of my worries. This problem needs to be addressed before something really bad happens.

The easiest thing is to send it back to Monoprice for another replacement, but we’re not going to do that this time. I bought this open-box unit with the expectation I’ll use it to learn more about 3D printer internals, so let’s start hacking away and do a brain transplant instead.

I could replace the brain with an identical unit, but based on the internet forum information, the problem is a design weakness of the board itself which means I’m likely to end up with the same problem again. It was certainly the case with my Maker Ultimate relay problem, so let’s do something else.

On recommendation of a local 3D printing enthusiast (and enlisting his help in the upgrade process) I will try replacing this printer’s brain with a Panucatt Azteeg X5 Mini with SD2224 drivers based on Trinamic’s TMC2224 chip. There will be no control UI, I’m going to skip the Viki 2 LCD board as I plan to control the printer via OctoPrint.

Next step: test to see if Azteeg X5 Mini is compatible with the Maker Select chassis.

Azteeg X5 Mini

Monoprice Maker Ultimate (Wanhao Duplicator i6) Kills Another Relay

I was willing to stop at “good enough for now” on modifying my open-box Monoprice Maker Select because I needed printers up and running. In the process of designing and iterating Sawppy‘s 3D-printed components, I kept both printers busy pumping out prototypes to see how the designs in my mind survived the translation into real world pieces.

Sometimes there was enough work to keep printers busy around the clock, and this was too much stress for the control boards inside these affordable printers. It’s an inevitable tradeoff between price tag and robustness. In the case of my Monoprice Maker Ultimate, the weakest point in the chain is the main motor relay that controls power going to all the motors (both stepper motors and fan motors) and heaters.

This relay has failed once before, and under the constant workload, another one has kicked the bucket. It has started failing intermittently which shows up as brief interruption in motor power. Since the electronics are not powered through this path, these brief interruptions ruined prints, making them look like the motor drive belt had skipped a few teeth when the reality was the motors stopping briefly as the electronics continued onwards.

Last time this happened, I kept trying to diagnose belt skipping. Wasting a lot of time looking over mechanical parts that were working well. This time I recognize the symptoms and pulled out the control board before the printer failed completely.

Since it wasn’t completely burned out yet, the relay exterior didn’t look bad – only a minor discoloration that might have gone overlooked if we didn’t know exactly where to look.

Relay exterior discoloration

Cutting away the relay’s blue enclosure exposed a familiar sight: the interior is fried.

D6 Second Failed Relay

It’s always easier to do something the second time, but addressing my second fried relay is still time spent not working on the project itself.

Y-axis Pulley Misalignment on Monoprice Maker Select (Wanhao Duplicator i3)

After I tightened the X-axis belts by three teeth, most of the ringing went away. Not all, but enough for me to look elsewhere for the next improvement. The obvious thing to do is to try the same thing with the Y-axis. It was also pretty easy to do but since the improvement was not as dramatic. I still have ringing on both X and Y axis but at least the worst of it went away.

While working with the Y-axis belt, something felt a little bit off. A few minor details didn’t line up the way I would have expected. Pulling out the caliper confirmed the eyeball diagnosis: the Y-axis components do not line up.

I measured the distance between edge of chassis and edge of belt at the idler pulley sitting in front of the printer.

YPulleyWithout moving the caliper, I compared that distance with the equivalent in the back, between the chassis and the drive pulley mounted on the Y-axis motor shaft. We’re off by more than the width of the belt.

YMotor

The first question: Is there an adjustment I should use to fix this? The idler pulley in front is pretty fixed in its place with no room for adjustment. This is also true of the motor bracket in the back. So the answer seems to be: No, there is no adjustment.

The next question: Is there a quick modification I can make to address this misalignment? There’s no good candidate in the front – swapping positions of the idler pulley and the holding nut would just make things worse. In the back, we could try to flip the pulley around on the motor shaft, but the set screws were installed tight.

While I was debating how much force I should use before I risk ruining the set screw… I realized I forgot to ask an important question. This should have been the zeroth question, so to speak: Is this misalignment causing a problem?

Um… well, I guess it isn’t the biggest problem at the moment.

So we’ll leave this on the to-do list for now and revisit later.

 

Tightening Belt To Mitigate Vibration Artifacts on Monoprice Maker Select (Wanhao Duplicator i3)

Now that my open-box Monoprice Maker Select (Wanhao Duplicator i3) is up and running, it’s time to take a closer look at the less than perfect print output. This was totally expected at this terrifically low price point, and part of the point of this exercise was to learn how to analyze 3D printer problems and how to address them. This printer is not just a tool – it is a project in and of itself!

The first (and as it turns out, a recurring) issue is a vibration artifact in the print after a sharp movement. After some web searches, I’ve learned this was called “ringing” because it’s the after effect of a sharp impulse, like ringing a bell. Looking at the printer, I thought the obvious culprit would be the Y-axis movement. It has to move the build platform so it would have more inertia to overcome and cause problems.

To confirm this hypothesis, I wanted a test object to print in perimeter-only “vase mode”. I created one in Onshape that would cause the printer to take a lot of sharp right turns, which should expose ringing effects.

Here’s the part of the object where the print head moved in X, holding Y steady. The ripple on the left is the Y-axis ringing after making the sharp turn.

Y ringing visible but less bad

And here is the counterpart, where print head was travelling in Y and holding X steady. The ripple on the left is the X-axis ringing after making the sharp turn.

X ringing is bad

And this is why we do a test before blindly going in to fix a problem that might not actually be there. Despite the original expectation for Y to exhibit large ringing effects, it was actually the X-axis!

Now that we know, we’ll try the easy thing first: tighten X-axis belt. A glance behind the machine showed the belt is currently very loose despite effort of spring tensioner.

MMS X Assembly

The low-cost method of holding the belt, using a M3 bolt and zip-ties, also makes it easy to modify. In this case, we just need to cut the zip-ties, pull the belt tighter, and put on new zip-ties. A silver sharpie was used to mark the starting point.

Silver Sharpie Marks Starting Position

The marker is so we could clearly tell that we’re tightening it by three teeth (for overall length reduction of 1.5 teeth.) Now if we need to tweak this in the future, we know how the changes relate to the original out-of-the-box condition.

X Axis Belt Tightened by 3 teeth

This change didn’t completely eliminate ringing, but situation is a lot better than before. It’s good enough to move on to the next problem.

SharpHash

Using OctoPi To Avoid Monoprice Maker Select (Wanhao Duplicator i3) Usability Issues

The Monoprice Maker Select 3D printer is a re-branded Wanhao Duplicator i3. Which is itself part of a lineage of 3D printers that can trace their ancestry to the Prusa i3. Josef Prusa invented an effective design that has seen wide adoption, including manufacturers who are very inventive at cutting cost. Now a serviceable 3D printer can be purchased for iPad money. Or even Chromebook money if buying used/refurbished.

That’s not to say everything is great. There are some definite trade-offs made to hit this price point, and the customer sitting in these cheap seats has to sacrifice some nice features of more polished printers.

One infuriating usability problem is the microSD card slot. It is on the side of the control box whose sheet metal enclosure has an over sized slot to make sure manufacturing tolerance issues won’t end up covering the card slot. Great for cheap manufacturing, but it also means is there’s plenty of room for a card to enter the sheet metal opening and miss the microSD slot entirely. If the user fingers release the card, thinking it was in the slot, the card drops into the enclosure and the user has to open the enclosure to retrieve the card.

Another usability issue is the control panel. First, the LCD is a primitive dot matrix display with very limited viewing angle. Second, it doesn’t always respond even when tactile feedback was returned by its control knob. It’s not clear if this is a problem in the knob (tactile feedback without electrical connection) or if it’s a software issue, but it is annoying either way.

One way to avoid both usability issues is to control the printer using OctoPi, the prebuilt image to run OctoPrint on a Raspberry Pi. The web-based interface eliminates the need to deal with the knob and LCD UI. And OctoPi’s G-Code upload/management functionality means never having to use that microSD slot.

Personally, I didn’t feel OctoPi delivered a lot of value for my Monoprice Maker Ultimate (Wanhao Duplicator i6) because the Ultimate had a well placed memory card slot for full SD cards and a decent control panel. In the case of the Maker Select, though, an OctoPi has saved a lot of aggravation.
OctoPiUI

Replacing Printing Surface on Monoprice Maker Select (Wanhao Duplicator i3)

The default printing surface that shipped with a Monoprice Maker Select feels similar to BuildTak. It is a good general purpose surface but some other materials will work better for specific plastic filaments and/or better fit personal preferences. Upon recommendation of this Hackaday printer review, I tried a PEI surface. My experience using it for printing Monoprice PLA has been stellar. So now that we have a second hand open-box Maker Select printer whose print surface was well used by the previous owner, the solution is obvious.

PEI 0 - scuffed surface

We could try to squeeze a little more life out of this surface, or replace it with a fresh sheet that came with the printer, but now that the printer has proven to be sufficiently functional we’re going straight to a sheet of PEI purchased from GizmoDorks’ Amazon store (*).

The first step is to remove the sheet. Historically most adhesives are easier to remove when warm and this is conveniently a heated bed. Setting the bed temperature to 40 degrees C warms things up a bit without risking skin burn. It peels off leaving only minor residue behind to be cleaned up.

PEI 1 - Peel

The PEI sheet is 8″ x 8″ which is only a tiny bit larger than the official 200mm x 200mm print area. It is definitely smaller than the sheet of aluminum on the printer. This means we should put in a bit of effort finding the proper position for the sheet on the bed. Fortunately the well-used surface clearly shows where the hot nozzle touches when homing at the start of a print, giving us our axis origin which we can mark off with a bit of masking tape.

PEI 1a - Zero

The PEI sheet is then placed against this origin to test for fit. We see that the upper-left corner conflicts with the screw used to level the bed.

PEI 3 - Align

PEI is brittle enough we can use a knife to cut the surface of the sheet at that corner and breaking a little bit off to clear the screw. After that we can peel off the adhesive backing and stick the PEI sheet on the bed. When doing this – check twice and commit! I hesitated and tried to adjust, which put a little wrinkle in the adhesive. This is visible towards the upper left. Thankfully the wrinkle didn’t noticeably affect top surface flatness, so I just have to live with a slightly crooked PEI sheet and a cosmetic blemish wrinkle.

PEI 4 - Stick


(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Monoprice Cleaning Filament Doing Its Job

I bought a secondhand “Open Box” entry level Monoprice Maker Select 3D printer to augment my rover printing factory. As expected, there were cosmetic blemishes on the machine, but that’s not important at all. The next task is to level the print bed. The wear on the print bed shows the printer to be well used, but the bed not remotely close to level. This is not a big deal – it is highly probable that something shifted during shipping.

After the print bed was back to level with the print axis, a test print attempt was foiled by the next problem: a clogged nozzle. This is also fairly common in 3D printers, so out came the unclogging tool: a 0.4mm diameter drill bit. It immediately restored filament flow, but only briefly. The nozzle quickly clogged again. Whatever is causing the clog, it must not have been broken up by the drill bit, only pushed aside and maybe rearranged.

Which means it’s time to bring out the next tool: Monoprice Cleaning Filament. For small clogs that can be cleared by the drill bit, it’s fine to just use whatever printing filament was on the machine. But when we start looking at a more serious clog, using filament formulated for the purpose hopefully makes the job easier.

The material causing nozzle jam was fortunately a dark color, making it easy to see when the white cleaning filament manages to dislodge some and carry it out of the nozzle. After some small bits were removed, the nozzle would quickly jam again requiring a push with the 0.4mm drill bit to rearrange the pieces and hopefully breaking apart the debris for more removal.

Cleaning Filament

This cycle was repeated several times. Each time the drill bit was used, a little more debris is removed by the cleaning filament, and we could run a little longer before nozzle jams up again. Eventually the nozzle was clear enough for the cleaning filament to extrude unimpeded for five minutes, and also coming out clean.

The cleaning filament did its job, the printer is back in business.

 

Monoprice Maker Select (Wanhao Duplicator i3) As Rover Workhorse

The story told so far of Sawppy the Rover is about its development and construction, and that story has reached the point where Sawppy is running into shortcomings of PLA plastic. The next step in that story is to look into rebuilding Sawppy in PETG plastic, but before we take that step, I’m going to rewind a bit and tell a different aspect of the story.

The story of the 3D printers behind the rover parts.

A very deliberate design goal for Sawppy is for it to be accessible to interested builders who don’t have a high end expensive 3D printer. Designing to be printable on low-end machines means avoiding printing parts that demand tight tolerances, so Sawppy uses pre-made gears and bearings instead of printing them. I’ve been pretty happy with my Monoprice Maker Ultimate (Wanhao Duplicator i6) but I know it is a few steps up from entry level. To make sure Sawppy can be printed on entry level machines, the best thing is to buy one and use it to print Sawppy.

So off we go to Monoprice.com to buy an open-box Maker Select (Wanhao Duplicator i3) which is one of the most affordable Prusa i3 clones available on the market. There are cheaper printer kits, but ready-built printers don’t come much cheaper than these either in price or quality.

This is actually my second go at one of these printers. I had purchased a new (not open-box) Maker Select before as a relative 3D printing beginner and it printed well for a month. But a few days out of the 30-day satisfaction guarantee period, the control box started filling the room with smoke of burnt electronics and it never powered on again. I returned that machine under the 1-year warranty and used the store credit towards the Maker Ultimate I have now.

This time around, in exchange for the open-box discount, I fully expect a problematic printer. People don’t return 3D printers for no reason, so it’ll be a complete luck of the draw on the particular…. personality… of an open-box 3D printer. And this time around, with a year of 3D printing under my belt, I hope to better able to deal with printer issues.

I expected an adventure, and I got one! This is the story of an open-box printer that was (eventually) able to print PETG parts for Sawppy the Rover version 1.0.Monoprice218641

Relay Replaced Instead of Bypassed on Monoprice Maker Ultimate (Wanhao Duplicator 6)

After the due diligence investigation of my broken Monoprice Maker Ultimate (a rebadged Wanhao Duplicator 6) I determined my unit has indeed suffered the known common failure of the main 24V relay. I was also satisfied as to the cause of the failure – it was the consequence of engineering design decision I disagreed with, driving a relay far above its rated rating of 10 amps. But I was unsatisfied with the internet forum wisdom of bypassing the relay when it fails. I thought it had a useful purpose to serve and should be replaced instead of bypassed.

I ordered a replacement (or more accurately a pack of them (*), since it makes little sense to buy or sell a single unit of something so cheap) and got to work once they showed up. The first order of business was to get out the label machine and label all the wires connected to the control board so I know where everything plugged back in. The wires were held in place with dabs of hot glue to resist them from being shaken loose in transit, those globs had to be removed before I could disconnect the wires. After that’s done, the board came out easily.

Before I started de-soldering anything, I performed a quick verification test on the new relay: I connected 5V across the control pins and heard a reassuring “click”. Multi-meter confirmed that the continuity shifted from the NC (Normally Closed) to NO (Normally Open) pin as expected.

After that, it’s time to heat up the soldering iron. Normally I would label the old component “BAD” before starting on the project, to make sure I don’t de-solder a broken component and inadvertently soldered the bad item right back onto the board. (This is the voice of experience speaking.) But in this case, the melted hole is a pretty good way for me to tell which is the bad one.

It takes some effort to de-solder a component with 5 large pins like this relay, but nothing tricky. It just requires a lot of patience with the de-soldering tools at hand. And once done, the new relay soldered into place easily.

With this replacement, my 3D printer is back in action with all original functionality intact.


(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Investigating the Infamous Relay Bypass for Monoprice Maker Ultimate (Wanhao Duplicator 6)

This week my 3D printer stopped working mid-print. All motor movement, heating activity, and cooling fans stopped simultaneously. However, the control panel is still responsive and so is the LED light strip. Time to hit the web and see what I can find.

My printer is a Monoprice Maker Ultimate, which is a rebranded Wanhao Duplicator 6. Which is in turn a knock-off of the Ultimaker design, though not a literal clone of any specific Ultimaker model.

A web search of my symptoms found a known point of failure with this product: the main 24V relay. The popular explanation is that Wanhao cloned somebody else’s circuit board, removed the features that would use the relay, and used a cheap relay that’s always on. So the recommended workaround is to solder a wire to bridge the legs of the relay and bypass it. “It doesn’t do anything anyway.”

I was skeptical of this explanation because if Wanhao is really just cutting costs, they would skip the relay entirely: no relay is cheaper than any relay! There must be more to this story.

But first, a check to see if the relay is indeed the fault. A quick visual inspection confirmed that there’s a problem with my relay, indicated by the melted hole in the side. For additional confirmation, we temporarily bridged the pins as recommended by forum posters. When done with the power on, it brought the always-on heat break and circuit board cooling fans immediately to life. Relay failure confirmed.

 

What does the relay do?

Turning off this relay cuts power to all 24V components: Motors, fans, and heaters. In normal operation, there’s no situation where the 5V components (micro-controller, display, LED strip) are running without the 24V components, so the answer must be related to abnormal operation. Our best hypothesis: this relay is a safety switch in place to halt the system if the 5V subsystem should fail. If that happens, it makes sense we’d want to shut down all the 24V parts too. And now that we have a plausible description of the relay as a safety feature, bypassing it with a soldered wire seems like a bad idea.

Why did the relay fail?

This part was easier to figure out. When I ran my printer with my Kill-A-Watt meter, it indicated the power draw jumps by over 300 watts when both heaters are active. So even ignoring the cooling fans and motors, the print bed and filament heaters together draw over 12.5 amps from the 24V plane.

Typing in the designation on the relay “SRD-05VDC-SL-C” found its datasheet, which says the relay can handle 10 amps. So the printer was designed such that the relay exceeded its rated capacity anytime both heaters are active. Not exactly a great design. The relay tolerated this overworked condition for many months but this week it could take no more.

The correct solution, then, would be to replace this relay with a higher-rated unit that can handle 15+ amps continuously. (12.5 for heaters + motors and fans + margin.) Unfortunately relays are not standardized in their footprint so I failed to find a drop-in higher-capacity replacement. (I found the Omron G5LE series with the same footprint, but with the same 10A maximum for DC so I’d be no better off.) Hooking up a beefier relay to the circuit board via wires is a possibility but intimidating. 300 watts of electricity is very good at finding minor flaws and turning them into big problems.

What do we do?

To summarize, the candidate solutions are:

  1. Bypass the relay with a wire as per internet forums: Seems like a bad idea to bypass a potential safety feature.
  2. Install an exact replacement: Known to work until it doesn’t.
  3. Install a higher-rated drop-in replacement: Great idea but such a replacement could not be found.
  4. Install a higher-rated unit elsewhere in the box, connect to the circuit board via wires: Adds many points of potential failure and >300W of power is unforgiving of flaws.

I’d love #3 but I couldn’t find a beefier relay with identical footprint. #1 and #4 are asking for trouble. For the immediate future, I choose #2 as the least-bad solution.


UPDATE 1: After the original relay was replaced with an identical unit, I cut open the original relay to see inside the failure.

UPDATE 2: As expected, the identical unit eventually failed in an identical way.

3D Printer, Fix Thyself.

fan-adapterI’ve enjoyed using my 3D printer to solve little problems around the house. This project was extra amusing: I wanted to solve a problem I had with my 3D printer that I wanted to solve with the 3D printer.

My Monoprice Select Mini 3D Printer is a basic unit built to a low cost, and I’m probably using it a lot more than it was designed for. The first component to show serious wear was the tiny 30mm cooling fan, a simple unit with a cheap sleeve bearing that wore out. As a result the fan started vibrating and making quite a racket.

I could easily buy a direct replacement fan online, but where’s the fun in that? I have a 40mm fan just lying around anyway. Let’s make an adapter!

For a while I was stymied by the fact that the two fans were mounted in opposite and inconvenient directions. The original 30mm fan screws were pointed in the direction of airflow, and the original 40mm fan screws were pointed against the airflow. This meant that when one set of fasteners were mounted on an adapter, holes for the other set would be blocked.

I spent approximately an hour tearing my hair out trying to design something clever, to no avail. Then clumsiness came to the rescue: I held the cooling duct (which the fan would be mounted on) in my hand, trying to think, when I accidentally dropped it. When it hit the floor, it fell apart into two pieces.

The duct was actually two pieces fit snugly against each other. All this time I had thought it was a single piece! With the two pieces apart, the interior of the duct became accessible. This meant I could use the 30mm fan screws opposite of the original direction (pointed against the airflow) where it is no longer blocked by the 40mm fan.

Suddenly the adapter project became trivial.

“Oops” moment for the win!

Entering the World of 3D Printing

153651And now for something completely different… I got a 3D printer! I’ve been keeping an eye on the field for years, and I knew it was only a matter of time before the price point drops to a point where I can no longer resist.

The Monoprice Select Mini 3D Printer (Item #153651) is their entry-level offering at $199. For an entry-level item, it has an impressive array of features. All the basics plus some not-so-basic features like a heated build bed. At the standard price it was already quite tempting. When Monoprice threw a 4th of July sale that cuts 20% off the price of any Monoprice-branded item… I could no longer resist.

As advertised, it came completely built and almost ready to go: the build bed levelling had to be double-checked because that can easily shift in transit, and indeed I had to make a few minor adjustments before it was level. It came with a micro-SD card with a G-code file ready to go, plus a short sample of PLA filament. I was up and printing within half an hour – very impressive!

The only complaint is that their sample filament is too short to actually complete the sample print job on the microSD card. If you look at the picture above (from Monoprice web site) it’s in the middle of printing the same object, and it is stopped at around the same point as the filament running out. I’m not sure if that’s a coincidence or intentional. In any case, I couldn’t complete the print until I got more filament to feed the machine.

Now I’m learning all the basics of tweaking a 3D printer. Temperature, speed, all that good stuff. It also means I need to learn some new tools. A 3D design program (I’m looking at Onshape, but there are many others) and a slicer to turn the 3D design into a G-code file (Monoprice recommended Cura for this printer.)

My Ruby on Rails education has been seriously sidetracked by this adventure, but it’ll be fun!