important refactor, array native and custom methods are added to prototype recursively