updated mixin to account for mixed options and callbacks