factory pattern for interface and empire