Creating RealPlayer, VirtualPlayer and their abstractions and interfaces