merge 0.3.x into 0.4.x