It'd be nice if the engine wasn't a global - sure, controlling the default with a global would be fine, but perhaps allow it to be either passed through, or even an attribute on the Array itself (though then you are locking down a single engine for an array, which isn't so good either). Hmmm - its a difficult balance isn't it...