Bit lot of refactoring. Also changed the way the opponent is choosed