3 patterns implemnted