add support for options, add a bunch of built-in directives