Encapsulate view properties in CellState enums, to avoid checking cell state while view cell redrawing.
Create super class for all chess pieces.
Remove observers.
Simplify view logic.
Update the clickCell() method to return boolean depending on the click result - true if a move was performed.