modify for issue #2
modify for issue #3
modify for issue #5
modify for issue #6
add Delegate Test