refactor play-pattern