compared with Zed's implementation, tweak my code with some inappropriate variable name
	it seems that Zed's implementation has memory leak