Refactor upm driver