updating to take options, support muting and mirroring and changing API to take stream first