perfect merge