the regexp is getting more and more complicated