added tests and extrated song object