Prototyping is used to find issues early and cheaply by testing ideas with target users. The goals of prototyping include exploring requirements, market analysis, choosing alternatives, and usability testing. To prototype, a basic functional version is built, tested for errors, corrected, and repeated until clean. Prototyping involves establishing objectives, defining functionality, developing a prototype, evaluating it, and evolving the prototype based on findings. Prototypes can take many forms from mockups to functional interfaces.