Add Factory method pattern
Delete