Different ways of splitting common logic