uses deep merge for options (#5)