Refactor Enablement

+ add EnabledInterface
CS fixes
Merge branch 'feature-Refactor_Enablement' into develop