The library has now been split into a number of separate files for easy maintenance. The files are grouped by context (for example, all actor-related stuff is in <>). The only file that needs to be #included is <>. The version information is now displayed by default before the introduction within userinit(). A new global property, debugparser, will cause the tokens in each command line to be displayed when it is true. The md parameter has been removed from the listcontents() functions. The here parameter passed to the listcontents() functions is now a list. When the player is in a Nestedroom, this list should contain both the Nestedroom and the containing Room. The global properties manysounds, manysmells, and manytouches are no longer used. The class Lockable is now an Openable rather than an Item. An enhanced Lightsource class, which allows light sources to be lit/extinguished and turned on/off. The property burntime determines for how long the light source will remain lit. You can also specify if a light source can be re-lit, and if it is a naked flame. All the light/unlight messages have been made totally customisable. Two new score extensions. A new global property, score_items_rooms, determines whether the percentage of items seen and rooms visited is displayed with the score. A second new global property, full_score, determines whether a list of completed scoring actions is displayed with the score. To use this, you will need to replace calls to incscore(x) with fullAdd(x, 's'), where 's' is the scoring action. For more information, see the score_and_rank() function in <>. InspectVerb will now disambiguate items and actors in preference to rooms. The initialisation method initmethod is no longer called from within preinit(). A new class, Initialization, can be used to define special routines that should be performed at initialisation. The preinit_phase method will be called from preinit(), and the init_phase method will be called from init(). Bolt-on modules for WorldClass should use this facility in preference to modifying userpreinit() or userinit(). The object properties listlistendesc, listsmelldesc, and listtouchdesc should no longer contain final punctuation, as this will be added by listcontents(). The mykey property of the Door class is now called key, to be consistent with the Lockable class. When an Openable (or any subclass thereof) is opened, its contents will be made known to all actors in the vicinity, not just the actor that opened the Openable. If it is a qOpenable, its contents will remain unknown to all actors, as before. More default responses have been added to the basic Actor class, including a response to ', inventory'. The new class realActor provides for an actor that can be given things. The properties takesall and takelist determine what the actor can be given. The new classes humanActor and animalActor (both of which inherit from realActor) provide for a more realistic implementation of people and animals (thanks to Jeff Laing, who wrote the original routine). The Player class has been modified to inherit from both Mover and humanActor, to assist in the implementation of games with multiple player-controlled actors. The new class talkingActor provides for an actor that can be engaged in multiple-choice conversations. For more information, see the class definition in <> (thanks to Trevor Powell, who wrote the original routine). The capitalisation for actor classes has been standardised, so Itemactor is now itemActor, and Trackactor is now trackActor. The 'movable' actor classes (Wanderer, trackActor, and Controllable) now include two hooks in their movement routines. The method departure is called before the actor moves to its new location, and passes the location and location type that the actor is moving from. The method arrival is called after the actor moves to its new location, and passes the location and location type that the actor has moved to. If an actor of any type defines a moveDaemon method, this will be started as a daemon from within init().