'lo, time to explain how some things are designed in the generic class
of these games

NB: You should read this file with a fixed font editor ...

the following set of functions is implemented in the hierarchy of classes :
GenericTetris -> BaseBoard -> Board -> specific Board class for each game

===============================================================================
action 'Piece Drop Down' activated
 |
pieceDropped()           <-|
 |                         |
oneLineDown() -> by timer -|

===============================================================================
if oneLineDown() make the piece touch the ground
 |
pieceDropped()           
 |                         
_beforeGlue()            <-|
 |                         |
beforeGlue()  -> by timer -|    // here is implemented the bump effect
 | (when done)
gluePiece()
 |
_afterGlue()             <-|
 |                         |
afterGlue()   -> by timer -|    // here kfouleggs remove holes
 | (when done)
needRemoving ? no -> checkGift()
 |
_beforeRemove()           <-|
 |                          |
beforeRemove() -> by timer -|   // here blocks to be removed are highlighted
 | (when done)
remove()
 |
_afterRemove()           <-|
 |                         |
afterRemove() -> by timer -|    // here is animated the fall of piece in
                                // the holes leaved by removed blocks
   needs removing again -> _beforeRemove()
 |
afterAfterRemove()
 |
checkGift()

===============================================================================
checkGift() ? no gift pending -> newPiece()
 | (gift pending)
putGift()
 |
_afterGift()           <-|
 |                       |
afterGift() -> by timer -|  // here kfouleggs make the gift block to land
 |
checkGift()
