Log In
Bannock Street Criterium, in memory of Mike Nields • Jul 17 2021 • Denver, CO
Clear, 87 degrees, wind 2 mph
Is there a Strava segment for this course? Paste the url here:
Categories
Race Pictures
Know where to find pictures from this race? Share the love by adding a Photo Url:
Note: sharing private Facebook albums is not exactly "da love." Remember to make it public!
 
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
DNF ? Dnf Unknown Rider
Finishers: Cat 5: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Nate Williford Groove Subaru Excel 0:21:48
2 Gavin Sanders Avout Racing 0:23:15
Finishers: Cat 5: 1   Cat ?: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Dante Humphrey 0:20:18
2 Chase Lawrence 0:20:24
3 Desmond Mohr Boulder Junior Cycli 0:21:13
4 Eros Orozco 0:21:57
5 Matias Sifuentes - 1 Lap
DNF Ian Edwards Avout Racing DNF
Finishers: Cat 5: 3   Cat ?: 3  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Liam Olson Avout Racing 0:40:21
2 Iskandar Ocampo - 2 Laps
3 Dante Orozco - 2 Laps
4 Luke Holloway Boulder Junior Cycli - 2 Laps
Finishers: Cat 5: 2   Cat ?: 2  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Caleb Schroder Avout Racing 0:39:59
1
2 Michael Watkins Boulder Junior Cycli 0:39:59
2
3 Adam Mote Avout Racing 0:39:59
3
Teammate Win: Caleb Schroder
4 Luke Elphingstone Boulder Junior Cycli 0:39:59
4
5 Charlie Barsch Boulder Junior Cycli 0:39:59
5
6 Sam Pflugh Rage Cycling Team 0:39:59
6
7 Vaughn Veenendaal Boulder Junior Cycli 0:41:14
Off The Back
Teammate Top 5: Michael Watkins
8 Andrew Simons Rage Cycling Team 0:42:08
Off The Back
DNF Jack T wildhirt DNF
Finishers: Cat 3: 2   Cat 4: 2   Cat 5: 3   Cat ?: 2  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Charlie Mohr Boulder Junior Cycli 0:23:00
DNF Ethan Alexander DNF
Finishers: Cat 5: 1   Cat ?: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Patrick Warner Stages Cycling 0:50:22
Off The Front
2 Jerod Ridge Black Swift / Cyclet 0:50:30
Off The Front
3 Michael Giem Tierra Plan Racing p 0:50:34
Off The Front
4 Chris Parsons Chalet/Celebrity Hom 0:51:07
1
5 Shawn Betz Stages Cycling 0:51:08
2
Teammate Win: Patrick Warner
6 Antony Barsi Black Swift / Cyclet 0:51:08
3
7 Keith Harper Black Swift / Cyclet 0:51:08
4
Teammate Top 5: Jerod Ridge
8 Lilburn Shaw CINCH Cycling 0:51:08
5
9 Jeffrey A hartman 0:51:08
6
10 Brian Hart Groove Subaru Excel 0:51:08
7
11 Todd Cassan 0:51:08
8
12 Craig Hofer Groove Subaru Excel 0:51:08
9
13 Corey Cope BoulderCentre for Or 0:51:08
10
14 Dan Schrad Physio Racing 0:51:08
11
15 Justin Little Black Swift / Cyclet 0:51:13 Teammate Top 5: Jerod Ridge
16 Jeff Hoobler Rally Sport Cycling 0:51:39
Off The Back
17 Jack Jefferies Rally Sport Cycling 0:51:51
Off The Back
18 Joseph Taddeucci Rally Sport Cycling 0:52:14
Off The Back
19 Robert Irish CINCH Cycling 0:52:22
Off The Back
20 Sam Beveridge Physio Racing - 1 Lap
Off The Back
21 Simon Shukhman CINCH Cycling - 1 Lap
Off The Back
DNF Shane Orr Groove Subaru Excel DNF
DNF Jeff Ofsanko Rally Sport Cycling DNF
Finishers: Cat 1: 6   Cat 2: 15   Cat 3: 1   Cat 4: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Deniz Warraich Full Send Racing p/b 0:51:08
2 Gary Wiese Capital Gainz Racing 0:51:08
3 Damon Brandt Palmares Racing 0:51:08
4 Juan Gutierrez Beyond Category Coac 0:51:08
5 Peter H gee Palmares Racing 0:51:08
6 David Ortiz 0:51:33
7 Frank Pike Beyond Category Coac 0:51:44 Teammate Top 5: Juan Gutierrez
8 William Manning Sonic Boom Racing 0:51:51
9 Antony Fraij Sonic Boom Racing - 2 Laps
DNF Jay Williford Groove Subaru Excel DNF
DNF Dean Digiulio Chalet/Celebrity Hom DNF
Finishers: Cat 3: 10   Cat 4: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Donald Dority Scheels Colorado Rac 0:37:54
1
2 Jon Squadrito 0:37:54
2
3 Ken Axford 0:37:54
3
4 Matthew Roeder Capital Gainz 0:37:54
4
5 Ben Miller Modern Market Racing 0:37:54
5
6 Michael Welker Primal - Audi Denver 0:37:54
6
7 Donald Lee 0:38:53
Off The Back
DNF Stew Lawrence DNF
DNF Andrew Mccarron CINCH Cycling DNF
Finishers: Cat 4: 6   Cat ?: 3  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Norman F alvis Chalet/Celebrity Hom 0:44:54
2 Lilburn Shaw CINCH Cycling 0:44:54
3 Chris Parsons Chalet/Celebrity Hom - 1 Lap Teammate Win: Norman F alvis
4 Unknown Rider Black Swift / Cyclet - 1 Lap
5 Peter Benkowski Palmares Racing - 1 Lap
6 Craig Hofer Groove Subaru Excel - 1 Lap
7 Damon Brandt Palmares Racing - 1 Lap Teammate Top 5: Peter Benkowski
8 Darryl Shockley Capital Gainz - 1 Lap
9 Emery Legg Great Divide Brewing - 1 Lap
10 Steve Rademacher Palmares Racing - 1 Lap Teammate Top 5: Peter Benkowski
11 Matt Duncan Panache Cyclewear Co - 1 Lap
12 Robert Arena Alfalfa's - 1 Lap
13 Kirk Groves Palmares Racing - 1 Lap Teammate Top 5: Peter Benkowski
14 Broc Thompson Great Divide Brewing - 1 Lap
15 Scott Kurban Groove Subaru Excel - 1 Lap
16 Dean Digiulio Chalet/Celebrity Hom - 1 Lap Teammate Win: Norman F alvis
17 Dan Berger Black Swift/Cycleton - 1 Lap
18 Juan Gutierrez Beyond Category Coac - 1 Lap
19 Al Stoltz Natural Grocers by V - 1 Lap
20 Peter Lucke Alfalfa's - 1 Lap
21 David Kendall Panache Cyclewear Co - 1 Lap
22 Garrick Mitchell Palmares Racing - 1 Lap Teammate Top 5: Peter Benkowski
23 Byron Nix Groove Subaru Excel - 1 Lap
24 Bennett Hug Modern Market Racing - 1 Lap
25 Clark Sheeham Stages - 1 Lap
26 Jeff Ofsanko Rally Sport Cycling - 1 Lap
27 Matthew Segur Alfalfa's - 1 Lap
DNF Scott Raymond Groove Subaru Excel DNF
DNF Robert Dahl Black Swift / Cyclet DNF Teammate Top 5: Unknown Rider
DNF Colm Flannery Wholesome Masters Ra DNF
Finishers: Cat 1: 3   Cat 2: 9   Cat 3: 16   Cat ?: 2  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Fabian Grassini 0:37:54
1
2 Michael Barsch Wholesome Masters Ra 0:37:54
2
3 Theodore Essenfeld Verge Sport Test Pilot 0:37:54
3
4 Troy Westergren Primal - Audi Denver 0:37:54
4
5 Rod Millott Century Road Club As 0:37:54
5
6 Michael Dodge Wholesome Masters Ra 0:37:54
6
7 Angel Chavez 0:37:54
7
8 George York COS Racing 0:37:54
8
9 Phillip Merrill Physio Racing 0:37:54
9
10 Philippe Capraro Rapha Cycling Club 0:37:54
10
11 Henry Eberhardt Modern Market Racing 0:38:57
Off The Back
12 Bill Lehman Groove Subaru Excel - 1 Lap
Off The Back
13 Louis Rodriguez Rapha Cycling Club - 1 Lap
Off The Back
14 Erik Judson ChristianCycling Col - 1 Lap
Off The Back
15 Christopher Dillis Physio Racing - 1 Lap
Off The Back
16 Karl Olsen - 1 Lap
Off The Back
17 Steven Morgan Front Rangers Cyclin - 2 Laps
Off The Back
DNF Marc Calder Modern Market Racing DNF
DNF Ken Maynell DNF
DNF Jim Scheel Groove Subaru Excel DNF
DNF Michael Still Capital Gainz DNF
Finishers: Cat 3: 1   Cat 4: 20  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Brack Hattler Great Divide Brewing 0:44:54
1
2 William Soden Great Divide Brewing 0:44:54
2
Teammate Win: Brack Hattler
3 John Steward CINCH Cycling 0:44:54
3
4 Michael Newsome BoulderCentre for Or 0:44:54
4
5 Robert Pinkerton Great Divide Brewing 0:44:54
5
Teammate Win: Brack Hattler
6 Joseph Paulson BoulderCentre for Or 0:44:54
6
7 Jim Kraychy Chalet/Celebrity Hom 0:44:54
7
8 Richard Guillery Alfalfa's 0:44:54
8
9 Lloyd Jones Old School Industrie 0:44:54
9
10 Jeff Ray Natural Grocers by V 0:44:54
10
11 Glen Winkel Old School Industrie 0:45:07
12 David Kruger BoulderCentre for Or 0:45:48
Off The Back
Teammate Top 5: Michael Newsome
13 Rip Mobus Chalet/Celebrity Hom 0:45:48
Off The Back
14 Andrew Buchanan 0:45:57
Off The Back
15 John Walker Groove Subaru Excel 0:45:59
Off The Back
16 Michael Porter Wholesome Masters Ra 0:46:06
Off The Back
Finishers: Cat 2: 8   Cat 3: 7   Cat 4: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Carl Reed Team Rio Grande 0:45:17
2 Larry Varys ChristianCycling Col 0:46:21
3 Donald Haywood Team Rio Grande 0:47:12 Teammate Win: Carl Reed
4 Stephen Bennett Racer X Cycling / C 0:47:22
Finishers: Cat 2: 1   Cat 3: 2   Cat 4: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Vaughn Veenendaal Boulder Junior Cycli 0:50:05
Off The Front
2 Ryan Witt Primal - Audi Denver 0:50:05
Off The Front
3 Judd Nutting Twin Peaks Racing 0:50:11
4 Oliver Boyd Boulder Junior Cycli 0:50:21
1
Teammate Win: Vaughn Veenendaal
5 Oinatz Uribe Sonic Boom Racing 0:50:21
2
6 Noah Collins 0:50:21
3
7 Alfred Querubin Full Send Racing p/b 0:50:21
4
8 Michael Migler Revolution Racing 0:50:21
5
9 Ryan Osullivan Full Send Racing p/b 0:50:21
6
10 David Mcneill Physio Racing 0:50:21
7
11 Caleb Schroder Avout Racing 0:50:21
8
12 Christopher J dolan 0:50:21
9
13 John Cortes 0:50:21
10
14 Luke Elphingstone Boulder Junior Cycli 0:50:21
11
Teammate Win: Vaughn Veenendaal
15 Tim Foltz Primal - Audi Denver 0:50:21
12
Teammate Top 5: Ryan Witt
16 Mike Swanson Primal - Audi Denver 0:50:21
13
Teammate Top 5: Ryan Witt
17 Aston Woy Team Rio Grande 0:50:21
14
18 Miles Livermore Go4Graham 0:50:21
15
19 Patrick Repasky Physio Racing 0:50:21
16
20 Alex Breakstone Beyond Category Coac 0:50:21
17
21 Andrew Simons Rage Cycling Team 0:50:21
18
22 Justin Stepchuk 0:50:21
19
23 Pano Garry 0:50:21
20
24 Matthew Shannon Reynolds Roofing Rac 0:50:21
21
25 Steven Lykens Physio Racing 0:50:21
22
26 Elliot Parcells 0:50:21
23
27 Zachary Woy Team Rio Grande 0:50:21
24
28 Ross Meyer Full Send Racing p/b 0:50:43
29 Thomas Carey 0:50:55
Off The Back
30 Paul Hesselgrave 0:51:08
Off The Back
31 Sebastian Sturges Ardor Racing - 1 Lap
Off The Back
DNF Max Perozek DNF
DNF Gordon Towne DNF
DNF Dakota Troudt Ardor Racing DNF
DNF Peter H gee Palmares Racing DNF
Finishers: Cat 3: 24   Cat 4: 9   Cat ?: 2  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Zachary Koelling Palmares Racing 0:34:14
2 Alan Carter Physio Racing 0:34:14
3 Phillip Heyer Groove Subaru Excel 0:34:23
1
4 Ben Miller Modern Market Racing 0:34:23
2
5 Stephen Michon Primal - Audi Denver 0:34:23
3
6 Adam Mote Avout Racing 0:34:23
4
7 Keaten Kappes 0:34:23
5
8 Drew Stuart 0:34:23
6
9 Sam Pflugh Rage Cycling Team 0:34:23
7
10 Donald Dority Scheels Colorado Rac 0:34:23
8
11 Liam Olson Avout Racing 0:34:23
9
12 Vin Hludzinski Boulder Junior Cycli 0:34:23
10
13 Erik Nemnich 0:34:23
11
14 Sean Ege 0:34:23
12
15 Alexander Aboud Century Road Club As 0:34:23
13
16 Patrick Nay Palmares Racing 0:34:23
14
Teammate Win: Zachary Koelling
17 Rich Clark Physio Racing 0:34:23
15
Teammate Top 5: Alan Carter
18 Galen Pogoncheff 0:34:23
16
19 Ken Axford 0:34:23
17
20 Colin Abel Primal - Audi Denver 0:35:54
Off The Back
Teammate Top 5: Stephen Michon
21 Andy Kemmer 0:35:57
Off The Back
22 Michael Welker Primal - Audi Denver - 1 Lap
Off The Back
Teammate Top 5: Stephen Michon
23 Pierce Powers - 1 Lap
Off The Back
24 Michael Gines Derby Bicycle Center - 1 Lap
Off The Back
25 Samuel Scheurich DBC Racing - 1 Lap
Off The Back
26 Ben Jendrek VR7 Colorado Cycling - 1 Lap
Off The Back
27 Travis Stuart - 1 Lap
Off The Back
28 Troy Westergren Primal - Audi Denver - 1 Lap
Off The Back
Teammate Top 5: Stephen Michon
29 Justin Andrews Physio Racing - 1 Lap
Off The Back
Teammate Top 5: Alan Carter
30 Osprey Brown DBC Racing - 2 Laps
Off The Back
DNF Kyle Blackwood Palmares Racing DNF Teammate Win: Zachary Koelling
DNF Connor Finley DBC Racing DNF
DNF Nicholas Gilida Primal - Audi Denver DNF Teammate Top 5: Stephen Michon
DNF Donald Lee DNF
DNF Nick Nielsen DNF
DNF Martin Osorio Reynolds Roofing Rac DNF
DNF Michael Still Capital Gainz DNF
DNF Karl Olsen DNF
Finishers: Cat 4: 21   Cat 5: 7   Cat ?: 10  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Nathaniel Falcone 0:35:25
Off The Front
2 Matt Nelson 0:36:20
1
3 Robert Adams 0:36:22
2
4 Chris Mueller Reynolds Roofing Rac 0:36:22
3
5 Steve Read 0:36:24
4
6 Anthony Harvey 0:36:25
5
7 Brian Saavedra 0:36:25
6
8 Adam Atchinson 0:37:16
Off The Back
9 Reid Neureiter - 1 Lap
Off The Back
10 Josh Palmary - 2 Laps
Off The Back
11 Garrett Kelly - 2 Laps
Off The Back
12 Diego Jules - 4 Laps
Off The Back
DNF Thomas Hereford DNF
Finishers: Cat 5: 1   Cat ?: 12  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Colby Lange UCI CT: Hagens Berma 0:59:54
2 Joshua Rinderknecht 1:01:12
3 Robert Wade Groove Subaru Excel - 1 Lap
4 Sean Christian - 1 Lap
5 Sam J redding Groove Subaru Excel - 1 Lap
6 Christopher Schroeder - 1 Lap
7 Keith Strand Full Send Racing p/b - 1 Lap
8 Steven Lecey - 1 Lap
9 Quintin Chiapperino CINCH Cycling - 1 Lap
10 Neil Bezdek Project Supertrainin - 1 Lap
11 Riley Sheehan - 1 Lap
12 Matthew Deangelis - 1 Lap
13 Donoven Francis CINCH Elite Team - 1 Lap
14 Gregory Daniel - 1 Lap
15 Keith Harper Black Swift / Cyclet - 1 Lap
16 Jared Scott Foundation CCB - 1 Lap
17 Andrew Lydic CINCH Elite Team -2 LAPS
18 Matthew Brady COS Racing -3 LAPS
DNF Melvin Barrios DNF
DNF Simon Lynn DNF
DNF David Kessler DNF
DNF John Zanner Full Send Racing p/b DNF
Finishers: Cat 1: 7   Cat 2: 10   Cat 3: 3   Cat 4: 1   Cat ?: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
3 Caroline Mani 0:49:31
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Zenobia Witt Front Rangers Cyclin 0:18:41
2 Adelyn Main Front Rangers Cyclin - 1 Lap Teammate Win: Zenobia Witt
Finishers: Cat 5: 1   Cat ?: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Amelia Orton Denver Dynamo 0:16:52
2 Samantha Laurie 0:18:18
Finishers: Cat 4: 1   Cat 5: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Yui Zagorski Groove Subaru Excel 0:23:06
2 Braelyn Matson - 1 Lap
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Gayle Connell Sol Squad p/b Whole 0:41:11
1
2 Amanda Bye Sol Squad p/b Whole 0:41:11
2
Teammate Win: Gayle Connell
DNF Roberta Smith Sol Squad p/b Whole DNF Teammate Win: Gayle Connell
Finishers: Cat 2: 1   Cat 3: 2  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Booka Smith BoulderCentre for Or 0:41:11
2 Michele J moffat 0:41:23
Finishers: Cat 3: 1   Cat 4: 1  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Sue Lloyd Hammer Racing Team p 0:41:11
2 Michel Brossmer Physio Racing 0:41:23
3 Kathryn Williams Sol Squad p/b Whole 0:41:27
Finishers: Cat 2: 1   Cat 4: 2  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Michelle Dobbs 0:49:31
2 Julie Hsu ALP Cycles Racing 0:49:31
3 Michelle Mjoen Natural Grocers by V - 1 Lap
4 Emma Bishop Palmares Racing - 1 Lap
5 Caroline Shaw Palmares Racing - 2 Laps
Finishers: Cat 3: 3   Cat 4: 2  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Kelly Hoose Physio Racing 0:41:11
2 Jasmine Kemble COS Racing 0:41:11
3 Jordan Johnson 0:41:11
4 Heather Ziebart 0:41:11
5 Genevieve Soden 0:41:11
6 Alexandra Coulter Physio Racing 0:41:30 Teammate Win: Kelly Hoose
7 Samantha Laurie 0:41:43
8 Ariane Barragan Sonic Boom Racing - 1 Lap
9 Taylor Johnson - 1 Lap
Finishers: Cat 4: 5   Cat 5: 1   Cat ?: 3  
By Age: All | U20 | 20-29 | 30-39 | 40-49 | 50-59 | 60+ | Custom
By Category: All | Custom
Pl First NameLast NameTeamTime
1 Rachel Plessing ALP Cycles Racing 0:49:31
1
2 Andrea Fasen CINCH Cycling 0:49:31
2
4 Aline Seitz 0:49:31
4
5 Olivia Maurey Palmares Racing 0:49:31
5
6 Allison Crow Orion Racing p/b Bor 0:49:31
6
7 Margot Clyne UCI WPT: DNA Pro Cyc 0:49:31
7
8 Kristie Arend Sonic Boom Racing 0:49:31
9 Lanier Allen Sonic Boom Racing 0:49:38
Finishers: Cat 2: 4   Cat 3: 2   Cat ?: 2