opponent structure implemented