1. A computer memory storing computer executable instructions for controlling a computing device to perform a method comprising: defining an imperative framework having a plurality of types; defining at least one of the plurality of types within the imperative framework as an immutable type wherein all post-construction changes to objects of the immutable type is not possible, and wherein the immutable type includes at least one immutable field; and verifying the immutable type within the imperative framework with a plurality of rules including: variable assignments of fields of the immutable type are initonly and only occur as part of a declaration or in a static constructor of the same class; types used as fields in the immutable type are also immutable such that immutable types do not derive from mutable types wherein the immutability of a derived type is not affected with mutations of the base type, subjected to the conditions of, the immutable type does not override virtual members and does not access fields from a base type, and base types can be immutability transparent; mutable types do not derive from immutable types; and immutable types do not share a ‘this’ reference during construction verified by at least one of: stores and aliasing of the ‘this’ reference are declared illegal, analyzing code for aliasing of the ‘this’ reference, recursively tracing static method calls made from the constructor, and dynamic method calls are declared illegal.