public DefaultNetwork(int inputs, int outputs, int hiddenLayers, int neuronsPerLayer, int maxInputThreshold, int maxOtherThreshold)
        {
            inputLayer = new Layer();
            for(int i = 1; i <= inputs; i++)
            {
                Neuron neuron = new DefaultNeuron(generateThreshold(maxInputThreshold));
                inputLayer.addNeuron(neuron);

                Connection connection = new Connection(generateWeight());
                neuron.addInput(connection);
                inputConnections.add(connection);

                adjustableConnections.add(connection);
            }

            ArrayList<Neuron> previousNeurons = inputLayer.getNeurons();

            for(int j = 1; j <= hiddenLayers; j++)
            {
                ArrayList<Neuron> newNeurons = new ArrayList<Neuron>();

                Layer layer = new Layer();
                for(int i = 1; i <= neuronsPerLayer; i++)
                {
                    Neuron neuron = new DefaultNeuron(generateThreshold(neuronsPerLayer));
                    layer.addNeuron(neuron);
                    newNeurons.add(neuron);

                    for(Neuron previousNeuron : previousNeurons)
                    {
                        Connection connection = new Connection(generateWeight());
                        previousNeuron.addOutput(connection);
                        neuron.addInput(connection);

                        adjustableConnections.add(connection);
                    }
                }
                this.hiddenLayers.add(layer);
                previousNeurons = newNeurons;
            }

            outputLayer = new Layer();
            for(int i = 1; i <= outputs; i++)
            {
                Neuron neuron = new DefaultNeuron(generateThreshold(maxOtherThreshold));
                outputLayer.addNeuron(neuron);

                for(Neuron previousNeuron : previousNeurons)
                {
                    Connection connection = new Connection(generateWeight());
                    previousNeuron.addOutput(connection);
                    neuron.addInput(connection);
                    adjustableConnections.add(connection);
                }

                Connection connection = new Connection(1);
                neuron.addOutput(connection);
                outputConnections.add(connection);
            }
        }