added lu function