using merge instead of extend to make sure things are deeply merged properly