merge from zhaoda/spa