Redesign the Sound file, use async + generalize

Program is in a working state but the sound file needs to be separated
into a virtual class and a Soundcloud specific class.