NestStep is an explicitly parallel language extension for imperative languages like C or Java. It is based on the BSP (bulk-synchronous parallel) model of parallel computation. Extending the classical BSP model, NestStep supports dynamically nested parallelism by nesting of supersteps and a hierarchical processor group concept. Moreover, NestStep supports a virtual shared memory emulation in software, where the memory consistency is relaxed to BSP superstep boundaries. We present the language design and describe its implementation for a workstation cluster.