Design principles for authoring dynamic, reusable learning objects | Synapse