v1.1 added the position option and refactored the opponent generation