add before and require
ordering
merge