shop implementation