merging in first full implementation