introduce abc for type safety