split library into a base and jukebox class
added and refactored tests