added program transformation semantics and member initialization list