This needlessly binds us to AbstractBarcode, which we'd like to replace by a value type like replacement.