In general, I think this class provides too much structure for the different backends. 

I would prefer to have a very simple interface for the backends, mainly they implement a `record` and perhaps `close` and `clean_interrupt`.