compare implementations