implement reverse v1
test via
merge