SaM 2 is a complete rewrite of the original stack machine. Its main objective is to restructure the SaM code, and divide it into components that resemble real computer hardware and software more closely. The new SaM code also enhances the instruction set with numerous additions, such as bitwise logic, floating point instructions, and string instructions. It provides a typed stack, which supports Integer, Floating Point Number, Character, Program Address, and Memory Address types. SaM 2 provides better error handling using exceptions. Finally, it provides new more powerful front-ends.