NeuralLayer is now generic