Recursive/deep extend and extendToLevel