New mixer API

For you interested. Still work in progress. Do not merge.

Addresses #665.
s/needs/need/