Param: all contents are static; contains the model parameters, so they can be easily shared and modified. Position: represents an xy position on the range. Contains a method that returns the position that's one step to the north, south, east, west of this position. Habitat: represents one habitat square on the grid. Holds the current amount of grass on the habitat, and contains methods needed to update the amount of grass as time goes by (growth and eating). Zebra: information about one of our zebras. Contains methods to make our zebra do its tricks, including making choices, eating, and dying Model: all information about the world we're simulating, including appropriate collections of Zebra and Habitat objects. The key methods are the constructor and a method to simulate one day in the model. RunModel: class with the main() function that instantiates Model and runs everything.