implementing support for options