rewrite Shop

rewrite & add UT