Vision 3D Printer – First Print

So you have the printer built and the software installed, now for the leap into printing with it.

Turning It On

Before you turn on the printer, double check the wiring one more time. Make sure the colors of the cables all line up (I had an endstop with a plug that was backwards and shorting the board). Here is the RAMPS wiring diagram again.

Ok, time to turn it on. You should see lights turn on flash on the arduino and RAMPS boards. If you don’t (or they instantly turn back off), unplug the power immediately. Your wiring could still be wrong and you might have either a short or a disconnect.

Debugging Wiring Problems

Debugging these problems can be painful if your not an electronics wiz. My best advice is to use a volt meter with a conductivity function (it beeps if the two probes touch). In this mode can you touch the different pins on the board and make sure that they are connected if they are supposed to be and not if they shouldn’t. Starting from basic things like power and then moving on to the peripherals is they way I normally work through the board.

If the problem isn’t obvious from above, you can also try unplugging everything and then one by one start adding the components back until either you find the problem component or until you have everything plugged in and working (remember to turn off the power each time you add something).

Making It Move

The board may power on, but you are still a ways off from being able to print. I recommend testing out your firmware configuration by using pronterface. Open pronterface, select the usb connection, an click connect. Once you have a connection, be prepared to turn off the power. Click the auto-home button, and if the motors start moving the wrong way, kill the power quick. You’ll want to make sure you leave enough room on all 3 axis so that you have time kill the switch before the motors start driving the axis too far one way.

Some common problems you may encounter at this stage are:

  1. Axis moves the wrong way (invert the direction in the firmware’s Configuration.h)
  2. Axis doesn’t move, but motor makes noise (turn up the gain on stepper driver)
  3. Motors don’t stop after hitting the end stop (invert the endstop in the firmware’s Configuration.h)
    1. Also, it is good to test the endstops by hand. Center the axis, push the endstop switch by hand, and then tell pronterface to move the axis towards the endstop. Make sure it moves when the endstop is open and doesn’t when it is closed.

Another useful trick is to loosen the pinion gears on the stepper motors so that you can test their movement with out actually moving the axis.

First Print

Turn on the heated bed and extruder heater in pronterface. The extruder should heat up quickly, but it may take several minutes for the bed to fully warm up. Once the extruder is at temp, move the z-axis up a few cm, and extrude some plastic via pronterface. It may take several cm worth of extrusion length before anything comes out. Make sure the filament is also moving the right way ūüôā

Assuming you have a model in gcode (see slic3r below), load it in pronterface and click print. If you make it through the first layer, consider yourself lucky. Also, try printing something really simple like a cube first. This will make it easier to see what is going wrong. There are many problems that you are likely to encounter at this stage:

  1. Nothing comes out of the extruder
    1. Sometimes, it just takes a little extra extruding before anything comes out (even after you just finished getting it to work). This is because extruders tend to ooze a little while they are idle. (Try adding a 1 layer skirt in slic3r.)
    2. Your temp sensor might be reporting incorrectly. (Make sure your temp sensor is correctly set in the firmware’s Configuration.h)
  2. The filament is too thick on the plate (Your z-axis 0 is too low. You can move the endstop or adjust the Z offset in slic3r)
  3. The filament instantly curls up off the plate. (Your Z-axis 0 is likely too high. Same solution as above)
  4. The filament height and thickness look right, but your part doesn’t stick, or starts to peel after a few layers. (Assuming you are using ABS, Try the ABS juice from Matt’s video. You really can’t add to much to the plate. I haven’t printed with PLA yet)
  5. The nozzle tears the tape on the printer plate. (Your z=axis 0 is too low. See above)

Got another problem? Let me know and I can add it ūüėČ

Slicing Your Model

You can spend a lot of time tweaking slic3r settings. In fact this topic alone is too long for me to write about. Try starting off with a tutorial like this one. I’m also a firm believer in using the latest version of slic3r. Some people advise that older versions work better, but I have not seen that to be true. In fact, with every new version there are many bug fixes and enhancements. Slic3r is only getting better and better.


Viki LCD


Much like the Vision 3D printer, the Viki LCD did not come with any instructions or RAMPS firmware. The following are my notes for how I got it to work. Luckily most of the work was already done by others!

RAMPS 1.4 Connectors

See the RAMPS 1.4 image for exact placement. This RAMPS schematic was also useful to me.


  • 5V
  • GND
  • 20
  • 21

AUX-3 (SD Card):

  1. GND
  2. NC
  3. SCK/D52
  4. CS/D53
  5. MISO/D50
  6. MOSI/D51
  7. 5V
  8. CD/D49

ViKi – RAMPS Pinout

The Panucatt pdf for the Viki LCD has nice descriptions of the pins and their functions.

Mapping the Viki LCD to the RAMPS board

Viki Top plug – RAMPS 1.4:

  • 5V – 5V (I2C, +)
  • GND – GND (I2C, -)
  • SDA ¬†– I2C 20 (I2C, 20)
  • SCL – ¬†I2C 21 (I2C, 21)
  • ENC_B -(AUX4, D17) – requires update to pins.h
  • ENC_A – (AUX4, D16) – requires update to pins.h

Viki Bottom Plug – RAMPS 1.4:

  • CS – (AUX3, D53)
  • BTN – (AUX4, D32) ¬†– requires update to pins.h
  • DI/MOSI – (AUX3, MOSI/D51)
  • CLK/SCK – (AUX3, SCK/D52)
  • CD – (AUX3, D49)
  • DO/MISO – (AUX3, MISO/D50)

The LCD comes will all of the cables broken out into single pins. I found it helpful to combine them into 4 new headers:

  • I2C (5V,GND,SDA, SCL)
  • AUX3 top (NC, CLK, D0, NC)
  • AUX3 bottom (NC, CS, D1, CD)
  • AUX4 (ENC_A, ENC_B)

This leave one remaining pin, BTN, which plugs into AUX4 at the end.

IMG_0131 IMG_0132


After much searching, I found Jim Morris’s comment on the Viki Kickstart page. After following his instructions, everything just worked! Here they are with a little more detail:

  1. > git clone 
  2. > git pull feature/add-vikilcd
  3. Download LiquidTWI from github
  4. Install the LiquidTWI library using these Arduino instructions
  5. Modify the Marlin/Configuration.h with the settings from your previous one. Do not copy it over. You need to edit the new one in place. It has additional configuration that is needed. Here is my new Configuration.h file.
  6. Modify pins.h to set BTN_EN1=16, BTN_EN2=17, and BTN_ENC=32. Or download my pins.h
  7. Compile and upload the new firmware and you should be good to go.

Printing Without The computer (“hostless printing”)

The RAMPS that ships with the Vision 3D printer should already have 2 key diodes installed (D1 & D2). If it doesn’t, or if you are running into issues, I found this SDRAMPS blog post very helpful.

In my case, both diodes were already installed, but still I couldn’t print without the USB cable. And after triple checking everything, I finally starting probing the RAMPS board and found a disconnect. Somehow I burnt out one of the traces (probably when I accidentally installed my end stops backwards). I soldered in a jumper over the burnt out trace and I was back in business.


Vision 3D Printer: Debugging Prints

Calibration Prints

Before printing anything real, it is useful to run some calibration prints.

Common calibration prints are cubes and lattice work:

NOTE:¬†it may take you a few tries before you can even successfully print a full part. In my case, I didn’t first calibrate the extruder, so my prints failed with way too much plastic:



See this blog post for steps to calibrate the extruder. After fixing the STEPS_PER_MM for the extruder and Z axis, my next calibration print looked like this:

IMG_0123 IMG_0125 IMG_0126

In this case, my tolerances are fine for large parts, but the detail isn’t so great, and there is a stepping problem in the X-axis:


This looked due to the belt being too loose, so I tighten up the tensioner on it, and things are looking better, but I have yet to run another full calibration print.

Filament Keeps Jamming

My first real printer parts were large, and I wasn’t able to get through a complete print without the extruder jamming. After much digging online, my problem sounded like a tension issue with the filament. So I tightened up the hose clamp significantly, and now I’m printing jam free. So make sure you have enough tension on yours!



Low Quality Prints For Small Objects

Things have been printing well so far, but all of a sudden my quality went way down:

IMG_0128 IMG_0127


What happened? It turns out that because I was only printing two really small parts, not enough time had passed between the extruder returning to the same place twice. Basically each layer printed so quickly, the plastic didn’t have enough time to cool down before the next layer was applied. There are two solutions you can implement to solve this. You can either add a fan and setup slic3r to turn it on (I’m about to do this as it seems like the preferred way). Or as a quick workaround, you can add a pause between each layer in slicer. Check out this reprap post for details on adding a pause.

Vision 3D Printer – Software Setup

General Information Needed

  • Stepper Motors:
    • Model: sy42sth47-1206a
    • 1.8¬į per step = 200 steps per rev
  • Stepper Drivers:
    • Pololu
    • 1/16 microstepping
  • X & Y Axis
    • 18 tooth pinion gear
    • MXL belt (2.03mm pitch)
  • Z Axis
    • M6 – 1mm per rotation ¬†???
  • Extruder
    • Pinion: 11 tooth
    • Extruder gear: 45 tooth
    • nozzle: 0.35mm – 0.5mm (read the size)
    • filament: 1.77mm (you need to measure multiple places and rotations, and then take the average)


Reference Material

Configuration Values (steps per mm)

I calculated these values by using Prusa’s calculator above and Richrap’s blog post on extruder calibration:

  • X Axis: 88/90 (calculated/measured)
  • Y Axis: 88/90
  • Z Axis: 3200
  • Extruder: ¬†595/632

Marlin Firmware

I’ve recently switch to the Marlin firmware and so far it seems to be working at least as good as Sprinter. It took a lot more setup to get it going, so hopefully it will be worth the effort. Here is my Configuration.h file.

NOTE: I only have 3 endstops: X_MIN, Y_MIN, Z_MIN. To get Marlin working I had to add jumpers for the X_MAX, Y_MAX, and Z_MAX endstop pins and set the max travel distance in the configuration.h file.

SD Card

If something is wrong, getting the SD card to work can be a little tricky because there is basically no debugging information. Make sure these things are true before you begin:

  • SD Card is formatted FAT 16 (some people say OSX doesn’t format it correctly, so I used my digital camera to do it)
  • SD holder is plugged in properly. The holder has 12 pins, but there are only 8 sticking out of the RAMPS. Make sure the lower 4 holes are hanging over. Look carefully at the RAMPS Wiring guide
  • In Marlin’s Configuration.h file, add/uncomment the line “#define SDSUPPORT”

Using the SD Card:

  • Name your file auto0.g if you want Marlin to automatically print it on boot
  • Alternatively you can “SD Print” from pronterface and unplug the computer once its¬†started


I added some custom g-code settings to the begin and end sections in slicer. Click Print Settings -> Custom G-Code

Start G-Code

M92 X90 ; X steps per mm
M92 Y90 ; Y steps per mm
M92 Z3200 ; Z steps per mm
M92 E660 ; Extruder steps per mm
G28 ; home all axes

End G-Code

M104 S0 ; turn off temperature
G1 X120 Y200 F1200 ; center x axis and move bed to front
M84 ; disable motors

Assembling The Vision 3D Printer (Steps 22 – 26)

Step 22 (endstops):

parts needed:

  • 3 endstop brackets (printed)
  • 3 wired endstops
  • 3 black bolts (16mm)
  • 3 small black nuts
  • 3 zip ties


Attach the endstops to the brackets with the zip ties. Note the orientation of each bracket in the photos:

IMG_0100 IMG_0104

Mount the end stops so that they limit the print nozzle from moving past the 0,0,0 position on the board. Or in other words:

  • X – Nozzle is furthest left
  • Y – Nozzle is closest to the front (bed all the way back)
  • Z – Nozzle can get very close but not touch the print bed (Don’t forget the glass/mirror)

Mounted X endstop:


Mounted Y endstop:


Mounted Z endstop:


Step 23 (Controller firmware):

Items needed:

NOTE: This step is Mac OSX specific, but the Arduino site has great instructions for uploading firmware or all supported operating systems.

Plugin the board to the computer using the USB cable. Confirm the computer registers the board By Going to System Preferences->Networking:

Screen Shot 2013-02-23 at 4.08.02 PM

Download the Arduino software and move it into Applications. Open the software and Select Tools->Board->Arduino 2560. Then select the correct serial port. It will be called /dev/tty.usbmodem*

Screen Shot 2013-02-23 at 4.10.11 PM

Open the Marlin.pde Sprinter.pde firmware file in the Arduino app, and click the Configuration.h tab. Look for the following variables and make them look like this:

#define _AXIS_STEP_PER_UNIT {80, 80, 3275,700}

const bool INVERT_X_DIR = true;

const bool INVERT_Y_DIR = false;

const bool INVERT_Z_DIR = true;

const bool INVERT_E_DIR = true;

NOTE: _AXIS_STEP_PER_UNIT will likely need some tweaking based on your exact setup. See Software Setup for calculating the values.

Finally, click the upload button (right arrow). You can unplug the controller once its done.

Step 24 (Connecting the controller):

parts needed:

  • ramps controller
  • 3d printer assembly
  • zip ties
  • 4 small washers


Cut 4 zip ties near the head.


To mount the controller, slide a zip tie through one of the holes on the board and into the printer. Then take a washer and put it around the zip tie, and finally tighten the zip tie with one of the cut off end. Mount the controller so that the USB and power plug faces up:


Attach all the wires to the controller as shown in the RAMPS wiring diagram. NOTE: make sure to match the colors of the wires, not the orientation of the plugs.

Step 25 (Lighting):

parts needed:

  • lighting controller
  • lighting strips
  • Y adapter
  • printer assembly
  • double sided tape
  • Kapton tape
  • 2 Foam strips

Tilt the printer onto its face. Take some pieces of double sided tape and attach a light strip to the bottom edge of the 3d printer. Make sure its centered. Peel the backing off of the light strip, and take 3 pieces of kapton tape and secure the strip to the base at the ends and center:


Take a foam strip, peel off it’s backing and attach it to the lighting strip (sticky side to sticky side). Then repeat this process for the other side.


Step 26 (tidy up the wires):

At this point the printer is basically assembled (minus the cooling fan and shroud). Tidy up all the loose wires with zip ties:


Make sure the extruder wires are loose and can span the entire distance that the X-carriage needs to travel:


Make sure to create a strain-relief for all 3 endstops:


The controller wiring looks like a mess in this photo, but its actually quite organized:


Assembling The Vision 3D Printer (Before You Begin)

The Right Parts:

Before you start building the Vision 3D Printer, you should double check that you have the right amount of a few key parts.

10mm black bolts (14 needed)

These will be used to mount the 4 stepper motors. Two of the stepper motors require 4 bolts each , and the other two require 3 each. My kit was short 2 bolts, so double check yours.

8 skateboard style bearings

These bearing are used for the the X and Y axis belts and for the Z axis supports. Its possible you can get by with 6 bearings, but I used 8. Here are the possible modifications:

  • Front Y axis: 2 bearings
  • Back Y axis: 1 bearing (optional 2nd)
  • X axis pulley: 1 bearing (optional 2nd)
  • Z axis supports: 1 bearing each

Mistakes In This Guide:

There are some mistakes in this guide, though I’m trying to correct them as I find them so please send me your feedback! Also, should you ever find a discrepancy between the photos and text, you should defer to the text. In many cases I took the photos before realizing there was a problem, and correcting the text is much easier than correcting the photos ūüėČ

Assembling The Vision 3D Printer (Steps 19 – 21)

Step 19 (installing the hot-end):

parts needed:

  • extruder assembly
  • wired hot-end


Unscrew the two black bolts stick out the back side of the extruder assembly. You don’t need to take them all the way out. Just loosen them enough so that the black hot-end stub can be removed:


Inser the wired hot end into the hole, and align it so that the wires are in the back, and the heater block is straight:


Now tighten back up the two bolts.

Step 20 (Mounting the extruder)

parts needed:

  • 3d printer
  • extruder assembly
  • 2 wide black bolts (3.5mm wide)
  • 2 large black nuts
  • zip ties

Slide the two bolts into the x-carriage. Note their position. The extruder needs to be installed at an angle so that is does not rub against the x-belt.


Insert the two nuts into the traps on the extruder, and attach and tighten down the extruder.


Once installed, use a zip tie or two to secure the extruder wires together and out of the way of any moving parts like the belt.

Step 21 (Power Supply):

parts needed:

  • power supply
  • wiring pack
  • RAMPS Controller board


Take the power cord with the switch and cover attached, and connect the 3 wires to the power supply. From RIGHT TO LEFT the Colors are BLACK, WHITE, GREEN.


Now take the small cable with the plug on one end and attach it to the 3rd and 4th screw terminal from the left. There is a small line that divides the Negative 3 terminals from the positive. This plug connects to the inner two terminal, straddling the line. Check out the photo:


Now Add the two red/black cables in the same way working your way inside to out:


At this point you can put the cover on:


Finally, take the power plug off of the RAMPS controller board and attach the 4 bare wires to it. The pattern for this plug is different. Positive and Negative alternate. In the photo below from RIGHT TO LEFT, it is RED, BLACK of one cable, then RED, BLACK, of the next cable:


Assembling The Vision 3D Printer (Steps 14-18)

Step 14 (Z axis motor couplers):

Update: This step is easier done just after Step 4

parts needed:

  • 2 short tubing
  • 8 zip ties

Turn the printer onto it’s back so that you can access the two Z stepper motors. Cut a zip tie so that it is 14 mm long from the tab.


Stick the short zip tie in one end of the tubing and slide it onto the stepper motor shaft. NOTE: you want the zip tie to line up with the flat part of the shaft.


Take 3 zip ties and and wrap them around the tubing on the shaft and tighten them down super tight.

TIP: You can use slightly larger pliers to both pull on the zip tie end while pushing the tab down. Grab the end very close to the tab, and then rotate the pliers over the end of the tab until the end of the zip tie breaks off.


Repeat this step for the other Z stepper motor.

Step 15 (Mounting the X-platform):

parts needed:

  • X platform (steps 12-13)
  • 2 threaded rods (230mm)
  • 2 springs
  • 4 brass nuts
  • piece of cardboard or packaging
  • 2 zip ties

Put the cardboard/packaging material on the heated bed to protect it, and then slide the X-platform through the side of the printer and rest it on the protective material.


Update: This is recommend from the Reprap Prusa Build Manual

Take the 4 brass nuts and wrap them 1.5 times in electrical tape.


Then cut the them apart from each other:


Slide one nut into the bottom of the X-motor assembly. Drop the spring into the top, and then press a nut on top of it. It should take a little pressure to hold the nut down.


Now thread the rod through the the top nut. When you thread the rod through, you need to keep the top nut flush with the top of the assembly so that the spring is under a little bit of tension, Once you pass the bottom nut, it will hold itself in place. Keep threading the rod until it sticks out a couple of inches past the bottom.


Now attach the threaded rod to the tubing on the motor shafts. I found it easiest to forcefully push the rod into the coupler to get it started. Then take two extra brass nuts and lock them on the bottom of the shaft as a gripping point. With those in place, hold the tubing with pliers (gipping around the motor shaft), and then use the wrench to turn the double nuts. This threads the shaft farther into the coupler. You want to keep turning until there is only a small (4mm?) gap between the the motor shaft and the threaded rod.


Step 16 (Z axis bearings and support):

parts needed:

  • printer assembly
  • 2 smooth rods (315mm)
  • 2 bar clamps (printed)
  • 4 large flat washers
  • 4 large nuts
  • 4 linear bearings
  • 2 bar caps (printed)
  • 4 small flat washers
  • 8 black bolts (25mm)
  • 8 black nuts

Insert two black bolts with small washers into each bar cap and set aside.

Attach the bar clamps with washer and nuts leaving them loose (See step 1 where we did this before). Slide two linear bearings onto a smooth rod and then slide the rod into the bottom bar clamp, and rest it against the top bar gap.


Attach the top bar cap and tighten it down. NOTE: be careful to get the nuts into the traps on the z-motor mounts. Then get the digital calipers and measure the distance from the top of the smooth rod to the side of the printer. Tighten the bottom bar clamp so that the bar is perfectly parallel to the printer wall. Use the digital calipers to make sure the top and bottom are even.


Slide the linear bearings into the X-assembly and tighten them down with 2 bolts and 2 nuts. Again, make sure the nuts slide into the traps on the bearing mounts. See step 7 where we have done this before.


Repeat this step for the other side.

Step 17 (Z axis support pt2):

Update: Matt says this step is no longer needed and can lead to z-wobble. I have not noticed any problems however.

parts needed:

  • 2 bearing blocks (printed)
  • 2 bearings
  • 4 brass nuts
  • 2 black bolts (25mm)
  • 4 small flat washers
  • 4 black nuts


Insert a bearing into a bearing block (as shown above), and clip the block onto the lower end of the smooth rod. Attach two brass nuts onto the threaded rod, with the lower nut 7mm above the end of the rod. Counter tighten the two nuts, and slide the bearing mount up until it is supporting the nuts/threaded rod. Tighten the bearing block to the smooth shaft using  a 25mm bolt with washers, and a double nut at the end.


Repeat this step for the other side.

Step 18 (X platform belt):

parts needed:

  • 2 black bolts (25mm)
  • 1 black bolt (16mm)
  • 2 small flat washers
  • 3 nuts
  • 4 part clamp set (printed)
  • belt
  • 1 zip tie


The photo above is missing one of the clamp pieces.

Warning: This step is admittedly questionable. I scrapped this together from some photos on thingiverse and reprap forums.

The first clamp to install is the one closest to the motor. Take the zip tie and tighten it about 1 inch from the end of the belt. Then fold the belt in half (teeth together) with the zip tie at the crease. One of the belt clamps is a little too narrow for the belt and at the same time, way too deep. Take the folded belt and wedge it inside the clamp (sorry no photo, but see the final one below for a little help). The zip tie should be right against the belt clamp. Then use the 16mm bolt with a washer and nut to tighten the clamp down. Be careful to get the belt all the way in between the side of the clamp so that it doesn’t interfere with the bolt and clamp.

Wrap the belt around the pinion gear, over the bearings, and bring it back to the other side of the x carriage. Take one of the 25mm bolts, and slide it into the side (nearest the idler) of the belt clamp. Attach a nut and thread it so that it sticks about 4mm out the other end. Then attach the very small domed piece (tensioner) to the end of the bolt. Orient the tensioner so that the curved end is horizontal. See photo:


Now take the belt and loop it across the top of the x carriage, around the tensioner and back along the bottom. Then take the two remaining clamps, and tighten them with the remaining 25mm bolt, washer, and nut. You need to pull the belt so that its tight, but the platform will still travel easily.



For another view see George’s great photo.

Finally, align and tighten the X motor pinion gear:


Assembling The Vision 3D Printer (Steps 12-13)

Step 12 (x axis pt1):

parts needed:

  • 1 stepper motor
  • 3 black bolts (10mm)
  • 1 pinion gear
  • X motor carriage (printed)
  • threaded rod (45mm)
  • 3 nuts
  • 3 large flat washers
  • 2 bearings
  • X idler carriage (printed)


Slide the pinion gear onto the motor shaft. The set screws need to be on the outside.¬†Don’t tighten it down yet. You will do that later. Then attach the motor to the mount with the 10mm bolts. You should orient the motor so that the cable comes out the bottom. The bolt along the bottom of the platform will be tricky because its hard to get to. I suggest getting one of the others started first, then do this one.


Now take the threaded rod, and thread it into the idler carriage. As you start to thread it through, attach 1 washer and then two nuts on to the inner side (see photo below). You’ll need to add them one at a time because there is not enough space otherwise.

Counter tighten the two nuts you just added, and then slide a washer, 2 bearings, another washer, and then finally a nut on to the other end of the threaded rod. Tighten the assembly by counter tightening the two outer nuts.


Step 13 (x axis pt2):

parts needed:

  • x motor assembly (step 12)
  • x idler assembly (step 12)
  • 2 smooth rods (600mm)
  • extruder carriage (printed)
  • 3 linear bearings
  • 4 black bolts (16mm)
  • 4 small flat washers
  • 3 black bolts (25mm)
  • 7 black nuts


Slide in the 3 linear bearings into the extruder carriage. Then attach the 25mm bolts and nuts told hold them in place. Don’t tighten yet.


Now slide the two rods into the holes on the X-motor assembly. This might take a lot of pressure. You want the ends of the rod to be flush with the outside of the plastic. The slide the extruder carriage onto the two rods. Make sure it is oriented the right way. You want the tabs for the belt clamps facing the back (by the motor), and you want the linear bearings facing down. See the photo below for details. Finally, slide the rods into the idler assembly. This might also take a lot of force, and if you go too far, you can use some large channel locks (big wrench) to push them flush again.


Before you are done, you need to install the 4 (16mm) bolts with washers and nuts into the two assemblies and tighten them up. If the extruder carriage slides back and forth smoothly, you should tighten up the 3 bolts holding the linear bearing in place.