player is a separate factory