private boolean updateScore(Player actual,boolean atEnd)
        {
            final boolean freeAtEnd = ! atEnd && actual == null;

            if ( sequenceLen >= requiredToWin ) 
            {
                rating = WIN_SCORE; // player has won
                return false;
            }
            
            if ( freeAtStart && freeAtEnd ) { // free space at start & end
                if ( sequenceLen == (requiredToWin -1 ) ) {
                    rating += (40 * sequenceLen);
                } else {
                    rating += (20 * sequenceLen);
                }
            } else if ( freeAtStart && ! freeAtEnd ) { // free space at start only
                if ( sequenceLen == (requiredToWin -1 ) ) {
                    rating += (10 * sequenceLen);
                } else {
                    rating += (5 * sequenceLen);
                }                
            } else {
//                rating += sequenceLen; // no free space at start nor end
            }
            return true;
        }