кстати, не всегда так получается 🙁
есть один сценарий, когда логика фунции грубо говоря одной строчкой отличается, но при этом возвращает разные типы стейта (у них просто часть внутренней логики и полей пересекается)
вероятно, нужно что-то с интерфейсами начудить и будет совсем гладко