make some readonly property public
refactored test case
fixed bad access on invokeing completion handler
apply Xcode suggestion