translate factory pattern
translate singleton design pattern