+ Introducing the feature system

+ some refactoring of existing code