Implement Factory & Memento design patterns.