optional callback and option object