this looks a lot like a neural network