updated with ignore case option