add proxy, adjust unit test, graceful stop