private void DoAddStuff()
        {
            if (!Validate())
                return;

            // if Validate is happy, create an ItemOfStuff to be added to the inbox
            // TODO: Hard coded to Trusted System 1 for now.

            var itemOfStuff = new ItemOfStuff()
                {  TrustedSystemId = "1", StuffId = Guid.NewGuid().ToString(),
                   StuffDescription = StuffDescription,
                   TimeUtc = DateTime.UtcNow
                };

            // time to store it
            _inboxService.AddStuffToInbox(itemOfStuff);

            // probably want to close our own ViewModel after
            // the "Add Screen" has finished with its purpose, adding stuff
            // uses the Close method on the MvxNavigatingObject base class to close our MvxViewModel.
            // Close TRIES (can't guarantee it) within the platform-specific UI View layer to close
            // the current ViewModel. // TODO more on that later, depends on how you design UI.
            // Close sends a msg to the UI Layer and asks,
            // "Can you close the View that Corresponds to this ViewModel?" and makes best effort to do it.
            // On closure the previous ViewModel on nav stack should be displayed (likely InboxViewModel)
            Close(this);
        }
        public void TrashStuff(ItemOfStuff itemOfStuff)
        {
            _inboxRepository.TrashStuff(itemOfStuff);

            // just like we publish a message when we add things (see above), we
            // may also want to do that when we delete things
            _mvxMessenger.Publish(new InboxChangedMessage(this));
        }
        // TODO: May want to do validation in here instead of ViewModel
        public void AddStuffToInbox(ItemOfStuff itemOfStuff)
        {
            _inboxRepository.AddStuffToInbox(itemOfStuff);

            // send msg to tell others there was stuff added
            // this can help properties in ViewModels stay updated

            _mvxMessenger.Publish(new InboxChangedMessage(this));
        }
 // TODO: Reminder about all current storage/repositories in here
 // TODO: Use SQLite as xplat file format to store "Event Stream blobs" maybe?
 // TODO: Do we want things that NEVER get deleted like events stored on a phone?
 // TODO: How would/could you be a good mobile-client citizen using ES on a client without infinite storage?
 // TODO: If I use SQLite "relational" approach, remember when I "Delete" an Action/Project, etc.
 // TODO: I have to manually deal with the ref integrity/cascading deletes, etc.
 public void TrashStuff(ItemOfStuff itemOfStuff)
 {
     _sqlConnection.Delete(itemOfStuff);
 }
 public void AddStuffToInbox(ItemOfStuff itemOfStuff)
 {
     _sqlConnection.Insert(itemOfStuff);
 }
        void ReloadInbox()
        {
            if (_inboxService.AllStuffInInbox().Count > 0)
            {
                StuffInInbox = _inboxService.AllStuffInInbox();
            }
            else
            {
                var noStuff = new ItemOfStuff
                    {StuffDescription = "no stuff in your inbox. \n  + add some stuff now!"};

                var noStuffList = new List<ItemOfStuff> {noStuff};

                StuffInInbox = noStuffList;
            }
        }