Мне надо было разделить код: тот, что под капотом останется, и пользователь не увидит никогда, и тот что пользователь будет считать интерфейсом. Накатал стратегию быстро, чтобы показать примерно (не тебе, конечно, а всем, кто читает, и, возможно, ни разу не видел). Вот все эти определения пустые ---...