2014/9/10 13:37 add recursive merge function