options defaults to empty object