Use new holder objects and factory functions