Transaction Shells: A New Approach to Courseware Authoring.