Added specs and implementation for Player