merge from jsprint