Visual programming is intuitively very appealing, because it allows the programmer to express relationships among, or transformations to, data simply by sketching them, pointing at them, or demonstrating them -- not by translating them into sequences of commands, pointers, and abstract symbols. This removal of many of the concepts traditionally required to program computers, combined with continuous visual feedback, offers the promise of making programming easier and more reliable. Yet, there is a problem that has caused the potential of visual programming to remain largely untapped. Most visual programming languages (VPLs) to date are not easily extended beyond small demonstration programs to adequately handle realistic programming without re-introducing the very concepts they have tried to remove. This problem is called the scaling-up problem. The objective of this research is to improve the scalability of VPLs. The focus is in three directions: (1) developing ways to increase expressive power and code reuse that also maintain the qualities of simplicity and concreteness; (2) developing a concrete approach to implicit polymorphic types suitable for VPLs; and (3) extending the applicability of VPLs. Research results from investigating these three directions are prototyped in the research system Forms/3, a lazy declarative visual language.