Adding player interface and abstracting out player functionality
Adding some player data validation