need more tests, see CQRSShop for the rest