Add requires and extends

Adds require and extend capability to the base engine.