implement new API per spec
new init/extend options API
directive interface change