Use named capture groups for easier reading