clean merge and a little bit integrated