separate exclude pattern and hidden pattern to make it more flexible