refactored playing interface