@Override
    final public void compute() {
        //
        // reset time.
        //
        final int last = this.frameidx;
        //
        // from first to last layer.
        //
        for (int l = 0; l < this.structure.layers.length; l++) {
            //
            if (l == this.structure.inputlayer) continue;
            final Layer layer = this.structure.layers[l];
            //
            // regular or reversed layer? 
            //
            if (layer.tag == LayerTag.REGULAR) {
                this.setFrameIdx(0);
                for (int t = 0; t <= last; t++) {
                    //
                    if (t > 0) {
                        this.copyOutput(this.frameidx - 1, this.frameidx, l);
                    }
                    this.computeLayerActivations(l);
                    //
                    this.incrFrameIdx();
                    
                }
            } else {
                this.setFrameIdx(last);
                for (int t = last; t >= 0; t--) {
                    //
                    if (t < last) {
                        this.copyOutput(this.frameidx + 1, this.frameidx, l);
                    }
                    this.computeLayerActivations(l);
                    //
                    this.decrFrameIdx();
                }
            }
        }//
        this.setFrameIdx(last);
    }