Programming in Oberon: Steps Beyond Pascal and Modula