added client parsing framework
merge from origin