major refactor for play mode