diff --git a/README-RU.md b/README-RU.md
new file mode 100644
index 0000000..ff6e9cb
--- /dev/null
+++ b/README-RU.md
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+# Auto Injections for [DragonECS](https://github.com/DCFApixels/DragonECS)
+
+| Languages: | [Русский](https://github.com/DCFApixels/DragonECS-AutoInjections/blob/main/README-RU.md) | [English(WIP)](https://github.com/DCFApixels/DragonECS-AutoInjections) |
+| :--- | :--- | :--- |
+
+Расширение призвано сократить объем кода, упростив инъекцию зависимостей, делая их автоматически.
+> **ВАЖНО!** Проект в стадии разработки. API может меняться.
+# Оглавление
+* [Установка](#Установка)
+ * [Зависимости](#Зависимости)
+ * [Unity-модуль](#Unity-модуль)
+ * [В виде исходников](#В-виде-иходников)
+* [Интеграция](#Интеграция)
+* [Инъекция зависимостей](#Инъекция-зависимостей)
+* [Auto Builder субъектов](#Auto-Builder-субъектов)
+* [Пример кода](#Пример-кода)
+* [Не null инъекции](#Не-null-инъекции)
+
+# Установка
+### Зависимости
+Убедитесь что в проекте установлен фреймворк [DragonECS](https://github.com/DCFApixels/DragonECS).
+* ### Unity-модуль
+Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`:
+```
+https://github.com/DCFApixels/DragonECS-AutoInjections.git
+```
+* ### В виде исходников
+Фреймворк так же может быть добавлен в проект в виде исходников.
+
+### Версионирование
+В DragonECS применяется следующая семантика версионирования: [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
+
+# Интеграция
+Добавьте вызов метода `AutoInject()` для Builder-а пайплайна. Пример:
+```csharp
+_pipeline = EcsPipeline.New()
+ .Inject(world)
+ .Inject(_timeService)
+ .Add(new TestSystem())
+ .Add(new VelocitySystem())
+ .Add(new ViewSystem())
+ .AutoInject()
+ .BuildAndInit();
+```
+
+# Инъекция зависимостей
+Атрибут `[EcsInject]` убирает необходимость использования интерфейса `IEcsInject`, поля помеченные таким атрибутом автоматически подхватят зависимости внедренные в Pipeline. Пример:
+```csharp
+[EcsInject] EcsDefaultWorld _world;
+```
+# Auto Builder субъектов
+Так же AutoInjections упрощает построение субъектов. Для начала наследуйте субъект не от `EcsSubject`, а от `EcsSubjectDI`, а далее добавьте специальные атрибуты.
+
+Атрибуты для инициализации полей с пулами:
+* `[Inc]` - кеширует пул и добавит тип компонента в включающее ограничение субъекта, аналог метода `Include`;
+* `[Exc]` - кеширует пул и добавит тип компонента в исключающее ограничение субъекта, аналог метода `Exclude`;
+* `[Opt]` - только кеширует пул, аналог метода `Optional`;
+
+Дополнительные атрибуты только для задания ограничений субъекта. Их можно применить к самому субъекту, либо к любому полю внутри. Используйте атрибуты:
+* `[IncImplicit(type)]` - добавит в включающее ограничение указанный в конструкторе тип `type`, аналог метода `Include`;
+* `[ExcImplicit(type)]` - добавит в исключающее ограничение указанный в конструкторе тип `type`, аналог метода `Exclude`;
+
+# Пример кода
+```csharp
+class VelocitySystemDI : IEcsRunProcess
+{
+ class Subject : EcsSubjectDI
+ {
+ [ExcImplicit(typeof(FreezedTag))]
+ [Inc] public EcsPool poses;
+ [Inc] public EcsPool velocities;
+ }
+
+ [EcsInject] EcsDefaultWorld _world;
+ [EcsInject] TimeService _time;
+
+ public void Run(EcsPipeline pipeline)
+ {
+ foreach (var e in _world.Where(out Subject s))
+ {
+ s.poses.Write(e).position += s.velocities.Read(e).value * _time.DeltaTime;
+ }
+ }
+}
+```
+
+Тот же код но без AutoInjections
+
+```csharp
+class VelocitySystem : IEcsRunProcess, IEcsInject, IEcsInject
+{
+ class Subject : EcsSubject
+ {
+ public EcsPool poses;
+ public EcsPool velocities;
+ public Subject(Builder b)
+ {
+ b.Exclude();
+ poses = b.Include();
+ velocities = b.Include();
+ }
+ }
+
+ EcsDefaultWorld _world;
+ TimeService _time;
+
+ public void Inject(EcsDefaultWorld obj) => _world = obj;
+ public void Inject(TimeService obj) => _time = obj;
+
+ public void Run(EcsPipeline pipeline)
+ {
+ foreach (var e in _world.Where(out Subject s))
+ {
+ s.poses.Write(e).position += s.velocities.Read(e).value * _time.DeltaTime;
+ }
+ }
+}
+```
+
+
+
+# Не null инъекции
+
+Чтобы поле помеченное `[EcsInject]` было проинициализированно даже в случае отстувия инъекции, в конструктор атрибута можно передать тип болванку. В примере ниже поле `foo` получит экземпляр класса `Foo` из инъекции или экземпляр `FooDummy : Foo` если инъекции небыло.
+``` csharp
+[EcsInject(typeof(FooDummy))] Foo foo;
+```
+> Для корректной работы переданный тип должен иметь конструктор без парамтров и быть либо того же типа что и поле, либо производного типа.
+
+Расширение так же сообщит если по завершению предварительной инъекции, остались не проинициализированные поля с `[EcsInject]`.
diff --git a/README.md b/README.md
index c1f2338..1492b4a 100644
--- a/README.md
+++ b/README.md
@@ -1,68 +1,26 @@
-
+
+
# Auto Injections for [DragonECS](https://github.com/DCFApixels/DragonECS)
-Расширение призвано сократить объем кода, упростив инъекцию зависимостей, делая их автоматически.
-> **ВАЖНО!** Проект в стадии разработки. API может меняться.
-# Оглавление
-* [Установка](#Установка)
- * [Зависимости](#Зависимости)
- * [Unity-модуль](#Unity-модуль)
- * [В виде исходников](#В-виде-иходников)
-* [Интеграция](#Интеграция)
-* [Инъекция зависимостей](#Инъекция-зависимостей)
-* [Auto Builder субъектов](#Auto-Builder-субъектов)
-* [Пример кода](#Пример-кода)
-* [Не null инъекции](#Не-null-инъекции)
-# Установка
-### Зависимости
-Убедитесь что в проекте установлен фреймворк [DragonECS](https://github.com/DCFApixels/DragonECS).
-* ### Unity-модуль
-Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`:
-```
-https://github.com/DCFApixels/DragonECS-AutoInjections.git
-```
-* ### В виде исходников
-Фреймворк так же может быть добавлен в проект в виде исходников.
+| Languages: | [Русский](https://github.com/DCFApixels/DragonECS-AutoInjections/blob/main/README-RU.md) | [English(WIP)](https://github.com/DCFApixels/DragonECS-AutoInjections) |
+| :--- | :--- | :--- |
-# Интеграция
-Добавьте вызов метода `AutoInject()` для фабрики Pipeline. Пример:
-```csharp
-_pipeline = EcsPipeline.New()
- .Inject(world)
- .Inject(_timeService)
- .Add(new TestSystem())
- .Add(new VelocitySystem())
- .Add(new ViewSystem())
- .AutoInject()
- .BuildAndInit();
-```
-
-# Инъекция зависимостей
-Атрибут `[EcsInject]` убирает необходимость использования интерфейса `IEcsInject`, поля помеченные таким атрибутом автоматически подхватят зависимости внедренные в Pipeline. Пример:
-```csharp
-[EcsInject] EcsDefaultWorld _world;
-```
-# Auto Builder субъектов
-Так же AutoInjections упрощает построение субъектов. Для начала наследуйте субъект не от `EcsSubject`, а от `EcsSubjectDI`, а далее добавьте специальные атрибуты.
+The extension is designed to reduce the amount of code by simplifying dependency injection by doing injections automatically.
+> **NOTICE:** The project is a work in progress, API may change.
+> While the English version of the README is incomplete, you can view the [Russian version](https://github.com/DCFApixels/DragonECS/blob/main/README-RU.md).
-Атрибуты для инициализации полей с пулами:
-* `[Inc]` - кеширует пул и добавит тип компонента в включающее ограничение субъекта, аналог метода `Include`;
-* `[Exc]` - кеширует пул и добавит тип компонента в исключающее ограничение субъекта, аналог метода `Exclude`;
-* `[Opt]` - только кеширует пул, аналог метода `Optional`;
+# Versioning
+DragonECS uses this versioning semantics: [Open](https://gist.github.com/DCFApixels/c3b178a308b411f530361d1d56f1f929#versioning)
-Дополнительные атрибуты только для задания ограничений субъекта. Их можно применить к самому субъекту, либо к любому полю внутри. Используйте атрибуты:
-* `[IncImplicit(type)]` - добавит в включающее ограничение указанный в конструкторе тип `type`, аналог метода `Include`;
-* `[ExcImplicit(type)]` - добавит в исключающее ограничение указанный в конструкторе тип `type`, аналог метода `Exclude`;
-
-# Пример кода
+# Code Example
```csharp
class VelocitySystemDI : IEcsRunProcess
{
@@ -86,7 +44,7 @@ class VelocitySystemDI : IEcsRunProcess
}
```
-Тот же код но без AutoInjections
+Same code but without AutoInjections
```csharp
class VelocitySystem : IEcsRunProcess, IEcsInject, IEcsInject
@@ -120,13 +78,3 @@ class VelocitySystem : IEcsRunProcess, IEcsInject, IEcsInject
-
-# Не null инъекции
-
-Чтобы поле помеченное `[EcsInject]` было проинициализированно даже в случае отстувия инъекции, в конструктор атрибута можно передать тип болванку. В примере ниже поле `foo` получит экземпляр класса `Foo` из инъекции или экземпляр `FooDummy : Foo` если инъекции небыло.
-``` csharp
-[EcsInject(typeof(FooDummy))] Foo foo;
-```
-> Для корректной работы переданный тип должен иметь конструктор без парамтров и быть либо того же типа что и поле, либо производного типа.
-
-Расширение так же сообщит если по завершению предварительной инъекции, остались не проинициализированные поля с `[EcsInject]`.