factory pattern :love_letter: