added backpropagation, doesn't quite work yet though