refine with a ClientAgent class
add push connect