Background

In a time of politically charged debates surrounding the topic of the 2nd Amendment to the US Constitution, both sides with their arguments often stretch and bend the present data to fit their message. Generalizing, the two sides we currently see are gun control advocates (GCA) and the 2nd Amendment Advocates (2AA). The GCA aim to reduce gun violence by enacting red flag laws, require a federal universal background check of which to ensure that only law abiding citizens in good mental health have access to firearms and its accessories. The 2AA aim to allow firearm ownership to be practiced by law abiding citizens as is stated by the 2nd Amendment to the United States Constitution.

The 2nd Amendment reads: “A well regulated militia, being necessary to the security of a free State, the right of the people to keep and bear Arms, shall not be infringed.”

When looking at the history of the United States, the word choice of the 2nd Amendment, and the its time in history, many arguments are formed based on different interpretations of who the 2nd Amendment applies to. GCA arguments point out that the words like “regulated,” “militia,” and “security of a free State,” offer reason to believe that the 2nd Amendment refers to a State’s ability to form a militia, and regulate it to the States liking; of which the National Guards gets cited, a collective entity. 2AA arguments goes down the road that the 2nd Amendment targets the individual specifically and that an armed individual (one), and a group of armed individuals (many) make up a militia. Different points get brought up regarding the other Amendments that show up in the Bill of Rights. 2AA highlight an exercise that taking out the 2nd Amendment from the Bill of Rights and then re-reading the Bill of Rights show that all other Amendments attain to the individual citizen (Wilson Combat, 2022). The Supreme Court has heard cases surrounding this very debate in Heller vs. District of Columbia in 2008.

To provide a brief background on the case, DC made it illegal to carry unregistered firearms, and also prohibited registration of handguns (unless through the chief of police issuing a license of which could be denied). Laws were put in placed that required registered firearms to be unloaded, disassembled, bound to a trigger lock to be rendered inoperable unless in a form of business or legal recreation. Heller worked as a special police officer that carried a handgun on duty but was denied by the chief of police when Heller went to apply for a license. After which, Heller sued DC arguing that they had “violated his Second Amendment right to keep a function firearm in his home without a license” (Oyez). After hearing arguments in court, the Supreme Court Justices came to a 5 - 4 majority in declaring the DC’s laws surrounding the permitting process and storage laws violated the 2nd Amendment. Justice Antonin Scalia would give the opinion of the court in a lengthy manner characterizing the history that the Amendment was written in, and how its current implementations relate to today.

The conclusion that the majority came to held onto the individual notion of the citizen being able to keep and bear arms, not the military. A main reasoning was since it “…would be to create exactly the type of state-sponsored force against which the Amendment was meant to protect people” (Oyez).

When looking at the States legal code, many different states have different laws when it comes to using deadly force (force that can lead to the physical harm or death of a person) during self defense. The three main classifications that states tend to portray themselves are Duty to Retreat, Castle Doctrine, or Stand Your Ground language in their legal code. The same definition provided here will be the same definitions displayed on the finished maps in the “Results” section of this report. Duty to retreat has language that states that a person who is under an imminent threat of personal harm must make a reasonable effort to avoid confrontation; de-escalation or leave the area of the threat. Stand your ground has language that allows armed individuals who believe they are in imminent danger to use deadly force without first attempting to retreat from the danger. Castle Doctrine has language which is similar to stand your ground and it typically limited to a home, property, and in some states, cars. The concept that an individual has a right to be safe/secure within his/her home (castle) and should not have to retreat from home in order to be safe.

Data

This project derived its data from the Gun Violence Archive (GVA), an independent research and data collection organization. GVA utilizing various autonomous data collection methods that collects from “…7,500+ sources from local and state police, media, data aggregates, government and other sources daily” (Gun Violence Archive, 2022). Utilizing processes of verifying reports through an initial researcher, and another secondary validation system, the GVA organization seeks to provide accurate and readily accessible data to further the discussion on gun violence (Gun Violence Archive, 2022). Collecting data was simple through GVA’s website, https://www.gunviolencearchive.org/, that saw a query search option for its records.

Data Acquisition

This portion highlights step by step instructions of what parameters were utilized in the query search of GVA, the process of using R: A language and environment for statistical computing for working with the data to create a comma separated value (CSV) file to then be used for geocoding in ESRI’s ArcGIS Pro.

2: Loading data into RStudio

Loading data will take place in the form of scripting and storing the CSV file as a data frame inside RStudio. Utilizing the package “readr”, this package will give us the ability to read and write to files in a neater fashion.

library(readr) ## used to read in and write to a csv file
library(dplyr)

The following code shows what variables the CSV files are being stored into. The file path used in this example is from the Github repository, 2019MappingOfGunArchive found here in the data folder: https://github.com/Duceman56/2019MappingOfGunArchive. The file path can also be a folder path on ones Windows or MacOS machine.

handgun1 <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/GVADec2nd2019ThroughDec31st2019HandgunIncidents.csv")
handgun2 <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/GVAJan1st2019ThroughMar1st2019HandgunIncidents.csv")
handgun3 <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/GVAJul2nd2019ThroughSep1st2019HandgunIncidents.csv")
handgun4 <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/GVAMar2nd2019ThroughMay1st2019HandgunIncidents.csv")
handgun5 <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/GVAMay2nd2019ThroughJul1st2019HandgunIncidents.csv")
handgun6 <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/GVASep2nd2019ThroughDec1st2019HandgunIncidents.csv")
rifle <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/GVAJan1st2019ThroughDec31st2019RifleIncidents.csv")
shotgun <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/GVAJan1stThroughDec31stShotgunIncidents.csv")

Method

Gun Violence Archive (GVA) Data

With the CSV files now loaded into working data frames, the objective is to create a new column that has the whole address on one line, and clean the data frames up to allow for all the handgun variables to be combined into one large “handgun” data frame to then be exported. After viewing each of the data frames, the main columns that will be preserved will be columns one through seven:

handgun1 <- handgun1[, 1:7]
handgun2 <- handgun2[, 1:7]
handgun3 <- handgun3[, 1:7]
handgun4 <- handgun4[, 1:7]
handgun5<- handgun5[, 1:7]
handgun6 <- handgun6[, 1:7]
rifle <- rifle[, 1:7]
shotgun <- shotgun[, 1:7]

Now that all the handgun variables have the same number of columns desired and includes only the wanted data, the following code will take all the handgun variables and produce the “handgun” data set:

handgun <- rbind(handgun1, handgun2, handgun3, handgun4, handgun5, handgun6)

With the new “handgun” data set, the addresses where each incident took place at are separated into three separate columns, “Address,” “City or County,” and “State.” The column “wholeAddress” is created that combines all three columns separated by a comma. Afterwards, we are required to force “wholeAddress” into being a temporary data frame called “handgunTemp”:

wholeAddress <- paste(handgun$Address, handgun$`City Or County`, handgun$State, sep = ", ")
handgunTemp <- as.data.frame(wholeAddress)

wholeAddressRifle <- paste(rifle$Address, rifle$`City Or County`, rifle$State, sep = ", ")
rifleTemp1 <- as.data.frame(wholeAddressRifle)

wholeAddressShotgun <- paste(shotgun$Address, shotgun$`City Or County`, shotgun$State, sep = ", ")
shotgunTemp1 <- as.data.frame(wholeAddressShotgun)

With each data frame now having their addresses in one column, combining the temporary data frame into the main data frame occurs:

handgun <- cbind(handgun, handgunTemp)
rifle <- cbind(rifle, rifleTemp1)
shotgun <- cbind(shotgun, shotgunTemp1)

Now that all the data frames are adequate to move forward, writing the new data frames to a separate CSV file takes place. The file path will need to be located someplace on ones computer:

## for MacOS machines
write_csv(handgun, file = "//Users//carsond//Desktop//handgun.csv")
write_csv(rifle, file = "//Users//carsond//Desktop//rifle.csv")
write_csv(shotgun, file = "//Users//carsond//Desktop//shotgun.csv")

## for Window machines
write_csv(handgun, file = "Q://StudentCoursework//Zeitler//GEOG.280.001.2235//DUCECR1126//09 - Final Map Project//handgun.csv") 
write_csv(rifle, file = "Q://StudentCoursework//Zeitler//GEOG.280.001.2235//DUCECR1126//09 - Final Map Project//handgun.csv")
write_csv(shotgun, file = "Q://StudentCoursework//Zeitler//GEOG.280.001.2235//DUCECR1126//09 - Final Map Project//handgun.csv")

With our exported CSV files in a folder on our machine, open up ArcGIS Pro and sign in with your account. Create a new map project, name and store it in the same folder as the exported CSV files are located. Load up the main base map in ArcGIS Pro and within the “Analysis” tab, click “Tools” to open up the geoprocessing tools. In the search bar, type in “geocoding.” Side note, this processing takes 40 credits per 1,000 addresses geocoded. When buying credits on ESRI’s website, 1000 credits cost $120. When working with the geocoding tool, for “Input Table,” click the yellow folder and find the first exported CSV file to be geocoded; click “OK.” For “Input Address Locator, the default ESRI locator will be used. Click the yellow folder and find where it says”Project” on the left side of the window and click into the “Locators” folder (see image 2.0). Select the “ArcGIS World Geocoding Service” and select “OK.” For “Input Address Fields” change it from “Multiple Field” to “Single Field” and find the column “wholeAddress” in the “Single Line Input” box. For the country, check the box that says “United States” and ensure that “Preferred Location Type” is set to “Address location.” When all is done the geocoding tool should be set up similar to what image 2.1 looks like.

Image 2.0: Finding the Address Locator

Image 2.1: Final Setup of Geocoding Tool

With a new layer in the “Contents” pane of the geocoded addresses, graduate colors was chosen for the symbology of how the data will be classified and mapped. Final results for the maps will be shown in the “Results” section of this report.

Within this map, the States themselves will also be color coded to portray a states legal status with their defense laws. As mentioned in the “Background” section of this report, the three different classifications the states fall into are duty to retreat, castle doctrine, and stand your ground. A shapefile (.shp) was found online with the outline of each states and imported into the map by putting the shapefile inside the folder with the exported CSV files. With this, locate the “Insert” tab and select “Add Folder.” Select the folder where the exported CSV file and the now shapefile resides. In the “Catalog” pane, right click where it says “Folders” and hit “Refresh” to ensure that the new data will show up in ArcGIS Pro. Located the shapefile and click and drag the file onto the map. From here, right click the layer in the “Contents” pane and select “Attribute Table.” One will be required to pull up the legal status of each state from a third party source and manually enter the data into a new column of the data set.

With the attribute table open, select the “Add” button and scroll down to the bottom where it says “Field” in the “Field Name” column. Insert “legal Status” and in the “Data Type” column, change it to “Text.” In the “Length” column, insert 100 to allocate 100 characters to the field. Save the edits and in the top ribbon and exit out of the fields editor. In the attribute table, find the newly created field and start entering the legal status of each state based on the state in the row. Once all states have their legal status filled in, save the data and change the symbology to “Unique Values” based on the field “legal Status.” Change the colors to any liking and set the “all other values” box to have either no color or a light gray color.

Center of Disease Control (CDC) Data

The Center of Disease Control (CDC) also has data regarding firearm deaths in the country. The data is set up where it list the number of deaths that occurred in each state. The following code will show reading in of the data and what variables are in this data set as it is different than that of GVA:

cdc <- read_csv("https://raw.githubusercontent.com/Duceman56/2019MappingOfGunArchive/main/data/cdcData2019.csv")
cdc2019 <- filter(cdc, cdc$YEAR == 2019) ## selects the year 2019 only
str(cdc2019)
## spc_tbl_ [50 × 5] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ YEAR  : num [1:50] 2019 2019 2019 2019 2019 ...
##  $ STATE : chr [1:50] "AL" "AK" "AZ" "AR" ...
##  $ RATE  : num [1:50] 22.2 24.4 15.1 19.3 7.2 14.2 5.3 9.9 12.7 15.8 ...
##  $ DEATHS: num [1:50] 1076 179 1136 580 2945 ...
##  $ URL   : chr [1:50] "/nchs/pressroom/states/alabama/al.htm" "/nchs/pressroom/states/alaska/ak.htm" "/nchs/pressroom/states/arizona/az.htm" "/nchs/pressroom/states/arkansas/ar.htm" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   YEAR = col_double(),
##   ..   STATE = col_character(),
##   ..   RATE = col_double(),
##   ..   DEATHS = col_double(),
##   ..   URL = col_character()
##   .. )
##  - attr(*, "problems")=<externalptr>

The variables present show the year, state name, the rate of deaths calculated based on 100,000 individuals, and number of deaths (URL is a html source). As analysis at the time is not available to dive into the different class of firearms and which ones were used during which incident, the main thing for us to do is to look at the sum of deaths from the CDC database and from the GVA database. This will take place in the “Results section of this report.

Results

The maps produced include three total maps that include one class of firearm per map.

Map 1: Handgun Deaths in the United States, 2019

Map 2: Rifle Deaths in the United States, 2019

Shotgun Deaths in the United States, 2019

Summary Statistics for Handgun

summary(handgun)
##   Incident ID      Incident Date         State           City Or County    
##  Min.   :1289551   Length:8035        Length:8035        Length:8035       
##  1st Qu.:1360317   Class :character   Class :character   Class :character  
##  Median :1436545   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :1439787                                                           
##  3rd Qu.:1509849                                                           
##  Max.   :2543834                                                           
##    Address             # Killed        # Injured      wholeAddress      
##  Length:8035        Min.   : 0.000   Min.   : 0.000   Length:8035       
##  Class :character   1st Qu.: 0.000   1st Qu.: 0.000   Class :character  
##  Mode  :character   Median : 0.000   Median : 0.000   Mode  :character  
##                     Mean   : 0.177   Mean   : 0.239                     
##                     3rd Qu.: 0.000   3rd Qu.: 0.000                     
##                     Max.   :13.000   Max.   :13.000
str(handgun)
## 'data.frame':    8035 obs. of  8 variables:
##  $ Incident ID   : num  1592647 1592563 1585921 1586924 1589821 ...
##  $ Incident Date : chr  "December 31, 2019" "December 31, 2019" "December 31, 2019" "December 31, 2019" ...
##  $ State         : chr  "Texas" "Texas" "Illinois" "West Virginia" ...
##  $ City Or County: chr  "Deer Park" "Beaumont" "Normal" "Chapmanville" ...
##  $ Address       : chr  "8700 block of Park Town Dr" "4000 block of Hartel St" "1700 block of Putnam Ave" "US-119" ...
##  $ # Killed      : num  0 0 1 0 0 0 0 0 0 0 ...
##  $ # Injured     : num  0 0 0 0 0 0 0 1 0 0 ...
##  $ wholeAddress  : chr  "8700 block of Park Town Dr, Deer Park, Texas" "4000 block of Hartel St, Beaumont, Texas" "1700 block of Putnam Ave, Normal, Illinois" "US-119, Chapmanville, West Virginia" ...
sum(handgun$`# Killed`)
## [1] 1422
sum(handgun$`# Injured`)
## [1] 1920
sd(handgun$`# Killed`)
## [1] 0.4957299
sd(handgun$`# Injured`)
## [1] 0.6433443
mean(handgun$`# Killed`)
## [1] 0.1769757
mean(handgun$`# Injured`)
## [1] 0.2389546

Summary Statistics for Rifle

summary(rifle)
##   Incident ID      Incident Date         State           City Or County    
##  Min.   :1289593   Length:1697        Length:1697        Length:1697       
##  1st Qu.:1367568   Class :character   Class :character   Class :character  
##  Median :1446730   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :1446771                                                           
##  3rd Qu.:1518222                                                           
##  Max.   :2011251                                                           
##    Address             # Killed         # Injured       wholeAddressRifle 
##  Length:1697        Min.   : 0.0000   Min.   : 0.0000   Length:1697       
##  Class :character   1st Qu.: 0.0000   1st Qu.: 0.0000   Class :character  
##  Mode  :character   Median : 0.0000   Median : 0.0000   Mode  :character  
##                     Mean   : 0.2334   Mean   : 0.2952                     
##                     3rd Qu.: 0.0000   3rd Qu.: 0.0000                     
##                     Max.   :23.0000   Max.   :23.0000
str(rifle)
## 'data.frame':    1697 obs. of  8 variables:
##  $ Incident ID      : num  1587720 1591127 1588533 1586130 1588054 ...
##  $ Incident Date    : chr  "31-Dec-19" "31-Dec-19" "31-Dec-19" "31-Dec-19" ...
##  $ State            : chr  "West Virginia" "Alaska" "Maryland" "Texas" ...
##  $ City Or County   : chr  "Buckhannon" "Kodiak" "Waldorf" "San Antonio" ...
##  $ Address          : chr  "Three Lick Rd" "Spruce Cape Rd" "4000 block of Night Heron Ct" "1300 block of Gibbs St" ...
##  $ # Killed         : num  0 0 0 0 0 1 0 0 0 0 ...
##  $ # Injured        : num  0 0 0 2 0 0 0 0 2 0 ...
##  $ wholeAddressRifle: chr  "Three Lick Rd, Buckhannon, West Virginia" "Spruce Cape Rd, Kodiak, Alaska" "4000 block of Night Heron Ct, Waldorf, Maryland" "1300 block of Gibbs St, San Antonio, Texas" ...
sum(rifle$`# Killed`)
## [1] 396
sum(rifle$`# Injured`)
## [1] 501
sd(rifle$`# Killed`)
## [1] 0.8346817
sd(rifle$`# Injured`)
## [1] 1.211456
mean(rifle$`# Killed`)
## [1] 0.233353
mean(rifle$`# Injured`)
## [1] 0.2952269

Summary Statistics for Shotgun

summary(shotgun)
##   Incident ID      Incident Date         State           City Or County    
##  Min.   :1290306   Length:1038        Length:1038        Length:1038       
##  1st Qu.:1363749   Class :character   Class :character   Class :character  
##  Median :1437019   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :1441638                                                           
##  3rd Qu.:1512249                                                           
##  Max.   :2441412                                                           
##    Address          # Victims Injured # Victims Killed wholeAddressShotgun
##  Length:1038        Min.   :0.0000    Min.   :0.0000   Length:1038        
##  Class :character   1st Qu.:0.0000    1st Qu.:0.0000   Class :character   
##  Mode  :character   Median :0.0000    Median :0.0000   Mode  :character   
##                     Mean   :0.1898    Mean   :0.1513                      
##                     3rd Qu.:0.0000    3rd Qu.:0.0000                      
##                     Max.   :5.0000    Max.   :4.0000
str(shotgun)
## 'data.frame':    1038 obs. of  8 variables:
##  $ Incident ID        : num  1585009 1589640 1584955 1583806 1584447 ...
##  $ Incident Date      : chr  "December 31, 2019" "December 31, 2019" "December 31, 2019" "December 30, 2019" ...
##  $ State              : chr  "New York" "Florida" "Indiana" "Texas" ...
##  $ City Or County     : chr  "Rochester" "Melbourne" "Cedar Lake" "Killeen" ...
##  $ Address            : chr  "Conkey Ave" "2000 block of Leewood Blvd" "13245 Grimm St" "802 N College St" ...
##  $ # Victims Injured  : num  0 0 0 0 0 0 1 0 0 0 ...
##  $ # Victims Killed   : num  0 1 0 1 0 0 0 2 0 0 ...
##  $ wholeAddressShotgun: chr  "Conkey Ave, Rochester, New York" "2000 block of Leewood Blvd, Melbourne, Florida" "13245 Grimm St, Cedar Lake, Indiana" "802 N College St, Killeen, Texas" ...
sum(shotgun$`# Victims Killed`)
## [1] 157
sum(shotgun$`# Victims Injured`)
## [1] 197
sd(shotgun$`# Victims Killed`)
## [1] 0.4039981
sd(shotgun$`# Victims Injured`)
## [1] 0.5211179
mean(shotgun$`# Victims Killed`)
## [1] 0.1512524
mean(shotgun$`# Victims Injured`)
## [1] 0.1897881

When comparing the results of the data from the GVA and the data from the CDC, different numbers show up along with different results. When looking at the sum of all deaths from the GVA we see a total death count for 2019 come out to be:

sum(handgun$`# Killed`) + sum(rifle$`# Killed`) + sum(shotgun$`# Victims Killed`)
## [1] 1975

When looking at the sum of all detahs from the CDC we see a total death count for 2019 come out to be:

sum(cdc2019$DEATHS)
## [1] 39566

These two numbers show a few discrepancies in that they are not close to one another in any way. One conclusion to come to is that due to the data collection method of GVA, they are not able to account for incidents that occur and get sent straight to the hospitals due to HIPPA laws that are in place. With only the ability to access public information, GVA’s system in place for data collection have no knowledge of knowing it ever happened due to HIPPA’s standards. Although With very little parsing of the current data, we have no means of understanding which firearm caused which death. Due to this, further research into the CDC querying system will need to be explored to further understand the breakdown of what firearm was used in which death. Third party sources utilizing greater CDC information mention numbers regarding the usage of handguns, “assault weapons” (rifle was not specifically mentioned), shotguns, and “type not stated” firearms. Handguns accounted for 59% of deaths in the year 2020, “assault weapons” accounted for 3% of deaths, shotguns accounted for 1% of deaths, and “type not stated” accounted for the remainder 36% of deaths (Gramlich, 2023). Although the maps created in this report do not reflect the whole population of gun deaths according to the CDC, the different rates of what firearms were used in what incident can still support the visual aspects of the map itself. Although difficulties come about when trying to account for the “type not stated” firearm percentage, the underlying percentages by the present data show a large component of gun deaths committed with handguns.

Conclusion

In a time of politically charged debates surrounding the topic of the 2nd Amendment to the US Constitution, both sides with their arguments often stretch and bend the present data to fit their message. Between GCA and 2AA, apart from playing a numbers game of where the greatest deaths occur in society, discussions of where gun deaths occur are often talked about in the sense of different income levels throughout a state. This map dove into the realm of gun deaths occurring in different states based on the language found in their self defense laws. When looking at the maps and the data that is plotted, it is hard to place whether or not a correlation occurs between different states and their different self defense laws. Bigger cities will have bigger clusters of plots in one area due to the density of people living their but nothing shows an increase in one state to the next. Handguns can be pointed out to have larger circles (meaning more victims killed in one incident) along with many circles (size is varying) throughout a vast number of states. Rifles show that larger circles do show up in a number of states, however the phenomenon appears to be in isolated events not directly located in an urban/large city. Shotguns show primarily the smallest circle throughout the country with few circles being larger than one victim killed being present in urban/large cities. Greater research will need to be sought out to apply numerical numbers to the spread of data depending on their states self defense language and gauge whether or not there is a correlation present.

References

“Castle Doctrine States 2023.” Wisevoter, March 22, 2023. https://wisevoter.com/state-rankings/castle-doctrine-states/#:~:text=In%20total%2C%20twenty%20states%20use,%2C%20West%20Virginia%2C%20and%20Wyoming.

“District of Columbia v. Heller.” Oyez. Accessed May 12, 2023. https://www.oyez.org/cases/2007/07-290.

Gramlich, J. (2023, April 26). What the data says about gun deaths in the U.S. Pew Research Center. https://www.pewresearch.org/short-reads/2023/04/26/what-the-data-says-about-gun-deaths-in-the-u-s/

“Gun Violence Archive.” Gun Violence Archive, January 1, 2022. https://www.gunviolencearchive.org/explainer.

R Core Team (2023). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.

Short answers against Gun Control & how to defend the 2nd Amendment. Critical Mas EP47. YouTube. Wilson Combat, 2022. https://www.youtube.com/watch?v=pHRZhS8GTc0&t=589s&ab_channel=WilsonCombat.

Willingham, AJ. “27 Words: Deconstructing the Second Amendment.” CNN, March 28, 2018. https://www.cnn.com/2016/08/10/politics/what-does-the-second-amendment-actually-mean-trnd/index.html.

Last edit: 5/16/2023