big refactoring in order to introduce: SRP vs RL+ASM separately