dont validate empty rules.
use array_get in validator.
fix conflicts.
use parents.
Merge branch '4.0'