Refactor the abstraction marker as a generic pattern