merge
working version