major player refactor