custom classes implementation
merge