working finite difference