combine implementations