add declarative, imperative and import support