add classes Dragon, Map, Mapcell, Opponent
change some return types
add some contract ensures