Rules: refactored and Decorator + AbstractRule created.