function add(
        uint256 _id
    ) external onlyController returns (
        bool isHatched,
        uint256 hatchedId,
        uint256 randomForEggOpening
    ) {
        require(!inNest[_id], "egg is already in nest");
        require(block.number > lastBlockNumber, "only 1 egg in a block");

        lastBlockNumber = block.number;
        inNest[_id] = true;

        
        if (isFull) {
            isHatched = true;
            hatchedId = eggs[0];
            randomForEggOpening = random.random(2**256 - 1);
            eggs[0] = eggs[1];
            eggs[1] = _id;
            delete inNest[hatchedId];
        } else {
            uint8 _index = eggs[0] == 0 ? 0 : 1;
            eggs[_index] = _id;
            if (_index == 1) {
                isFull = true;
            }
        }
    }