public void checkCollisions() {
        // check collision and call a something
        // or make an Event derived class to do so
        // TODO: how to define own events?
        // collisionCallback();

        if(action == null)
            return;

        //test 
        if(snakeHead.collidesWith(rat))
            action.snakeHitsRat();

        //TODO: callback for slef and rat collision
        // test collision with itself and borders 
        // FIXME: test collide with again
        // head collides with others already
        // its previous part has the same coordinates
        for(int i = 1; i  < snakeBody.size(); i++)
            if(snakeHead.collidesWith(snakeBody.get(i)))
                action.snakeHitsItself();


        if(!borders.contains(snakeHead.getBounds()))
            action.snakeHitsBorders();

        for(SnakePart part: snakeBody) {
            if(part == snakeHead)
                continue;

            if(borders.contains(part.getBounds()))
                action.partOutOfBorders(part);
        }
        /*
        Iterator<Direction>  borderIterator = borders.keySet().iterator();
        while(borderIterator.hasNext())
        {
           Direction d = borderIterator.next();
           if(snakeHead.intersects(borders.get(d)))
           {
                //System.out.println(d);
                action.snakeHitsBorderAt(d);
           }
        }
        */
    }