this is now using more derivatives and is working pretty damn well for up/down/left/right