Craig: Also, perhaps we should follow Consel and some others (and some of our own earlier thoughts) and allow more declarative specification of which fields of a struct are static and which globals are static. We'd allow procedural overriding of these defaults (*dynamic and *static operators; * just takes the default interpretation for the target memory). I guess we might think about having static or dynamic annotations become part of the type of a variable/ field, or a storage class, or something like that. "*static p" then would be sugar for "*((static foo*) p)", i.e., a cast to static. static and dynamic fit in the same place that const does now. Declarative specification where it works, and procedural overrides for full flexibility.