merge and tested