Major Refactoring

I did a major refactored the code as I was going through it.
Also added support for recording 1 or more channels.

My changes are not backwards compatible with the existing version as I have renamed and moved and removed many things