rewrote whole node backend to fit new spec