Sound added (BFXR rocks) + a lot of refactoring