added plot methods, working gradient, but overall result not great.