fleshed out player, converted load to promise-based system