refactored - the #play is still a beast of a method