This paper introduces the SOM (Simple Object Machine) family of virtual machine (VM) implementations, a collection of VMs for the same Smalltalk dialect addressing students at different levels of expertise. Starting from a Javabased implementation, several ports of the VM to different programming languages have been developed and put to successful use in teaching at both undergraduate and graduate levels since 2006. Moreover, the VMs have been used in various research projects. The paper documents the rationale behind each of the SOM VMs and results that have been achieved in teaching and research. Categories and Subject Descriptors K.3.2 [Computer and Information Science Education]: Computer science education, Information systems education; D.3.4 [Processors]: Interpreters, Memory management, Optimization, Run-time environments; D.2.11 [Software Architectures]: Domain-specific architectures General Terms Design, documentation, languages Keywords Virtual machine, teaching, research...