Если честно, да, это, по-моему, это невозможно совместить с архитектурой шелла со встроенным списком команд, поскольку решительно неясно, как объяснить шеллу, что передавать get, put и remove. Я вижу два решения: унаследовать MultiTableDataBase от FileMap - едва ли не определение слова  "костыль" - или же заставить команды get, put и remove изначально принимать в качестве state MultiTableDataBase. Оба решения мне не нравятся. Что делать - не очень ясно.