Caching (on two levels!) and quite possibly working State transition
class.