Refactoring and rewrites to have more conform API

Massive rewrites and adding new features as:
* Waiting to get user interaction
* Disable sound for Windows
* Easier API
* Better fallback support