data Action = AttackTo Target | Iso Command deriving (Show)
data Target = ToPlayer | ToEnemy deriving (Show)

data CommandList = CommandList {
  _index :: Int,
  _listSize :: Int,
  _commandMap :: IM.IntMap Command
} deriving (Show)

index :: Lens' CommandList Int
index = lens _index (\f x -> f { _index = x })
listSize :: Lens' CommandList Int
listSize = lens _listSize (\f x -> f { _listSize = x })
commandMap :: Lens' CommandList (IM.IntMap Command)
commandMap = lens _commandMap (\f x -> f { _commandMap = x })