I present an implementation of shape grammars that is aimed at supporting designers. It has two parts: a grammar editor and a stand-alone interpreter. The editor is the modeling application Rhinoceros3d using Python scripts. The interpreter is general, is three-dimensional, and supports subshape detection. A grammar is a Rhinoceros3d model; thus users can manipulate all its parts directly and immediately. That is, they can modify any shape without selecting or invoking an editor, and they can lay out the parts of the grammar in any way they find meaningful. Using this approach, which I call a whole-grammar approach, users are shielded from most subdomain tasks, like typing text files or specifying transformations. Informal observations suggest that users of this implementation can work effectively.