use new for empty struct.
refactorring renaming and clarify definition.
test for Close()