implementing shop api, closes #29