We devise a technique for augmenting shared objects in the standard n-process shared memory model with a linearizable write() operation, using bounded space and optimal worstcase step complexity. We provide a transformation of any shared object SW supporting only sequential write() operations into an object W that supports concurrent write() operations. This transformation requires O(n 2 ) SW objects and O(n 2 ) O(log n)-bit registers, and each method (including write()) has, up to a constant additive term, the same time complexity as the corresponding method on object SW . Our implementation is deterministic, wait-free, and uses only shared registers (supporting atomic read and write operations). To the best of our knowledge, similarly efficient general constructions are not known even if stronger primitives such as CAS or LL/SC are available.Applying our transformation, we obtain an implementation of a k-word register from O(n 2 · k) single-word registers. As another application we can transform one-time TAS objects (e.g., randomized wait-free implementations that use a bounded number of registers [8,9]), into long-lived ones using also a bounded number of registers. The transformation preserves the time complexity of TAS() operations and allows resets in constant worst-case time.Our transformation employs a novel memory reclamation technique, which can replace Hazard Pointers [20] and is more efficient.