merge with interfaces
merge with interfaces
working