forward declaration
merge