Add decorator pattern
Add prototype pattern