diff --git a/.gitignore b/.gitignore
index 4a453e53..82f38bf0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,5 +15,6 @@ Cargo.lock
 rust-unmangle
 *.svg
 *.data
+.idea/
 
 sample_configs/testing.toml
diff --git a/rustfmt.toml b/rustfmt.toml
index c7c801a9..5e1a41b9 100644
--- a/rustfmt.toml
+++ b/rustfmt.toml
@@ -3,11 +3,7 @@ max_width = 100
 newline_style = "Unix"
 reorder_imports = true
 fn_args_layout = "Compressed"
-empty_item_single_line = false
 hard_tabs = true
-merge_imports = true
 merge_derives = true
 reorder_modules = true
-reorder_impl_items = true
 tab_spaces = 4
-format_strings = true
diff --git a/src/app.rs b/src/app.rs
index b2313e08..e23938ac 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -1,16 +1,17 @@
-pub mod data_harvester;
-use data_harvester::{processes, temperature};
 use std::time::Instant;
 
-pub mod data_farmer;
-use data_farmer::*;
-
-use crate::{canvas, constants, utils::error::Result};
-mod process_killer;
-
 use unicode_segmentation::GraphemeCursor;
 use unicode_width::{UnicodeWidthChar, UnicodeWidthStr};
 
+use data_farmer::*;
+use data_harvester::{processes, temperature};
+
+use crate::{canvas, constants, utils::error::Result};
+
+pub mod data_farmer;
+pub mod data_harvester;
+mod process_killer;
+
 const MAX_SEARCH_LENGTH: usize = 200;
 
 #[derive(Debug, Clone, Copy)]
@@ -1031,7 +1032,7 @@ impl App {
 	pub fn kill_highlighted_process(&mut self) -> Result<()> {
 		// Technically unnecessary but this is a good check...
 		if let WidgetPosition::Process = self.current_widget_selected {
-			if let Some(current_selected_processes) = &(self.to_delete_process_list) {
+			if let Some(current_selected_processes) = &self.to_delete_process_list {
 				for pid in &current_selected_processes.1 {
 					process_killer::kill_process_given_pid(*pid)?;
 				}
diff --git a/src/app/data_farmer.rs b/src/app/data_farmer.rs
index 9741c563..6552a8ec 100644
--- a/src/app/data_farmer.rs
+++ b/src/app/data_farmer.rs
@@ -1,4 +1,3 @@
-use crate::data_harvester::{cpu, disks, mem, network, processes, temperature, Data};
 /// In charge of cleaning, processing, and managing data.  I couldn't think of
 /// a better name for the file.  Since I called data collection "harvesting",
 /// then this is the farmer I guess.
@@ -16,6 +15,8 @@ use crate::data_harvester::{cpu, disks, mem, network, processes, temperature, Da
 use std::time::Instant;
 use std::vec::Vec;
 
+use crate::data_harvester::{cpu, disks, mem, network, processes, temperature, Data};
+
 pub type TimeOffset = f64;
 pub type Value = f64;
 pub type JoinedDataPoints = (Value, Vec<(TimeOffset, Value)>);
diff --git a/src/app/data_harvester.rs b/src/app/data_harvester.rs
index bee29eb7..80d46a9e 100644
--- a/src/app/data_harvester.rs
+++ b/src/app/data_harvester.rs
@@ -1,6 +1,7 @@
 //! This is the main file to house data collection functions.
 
 use std::{collections::HashMap, time::Instant};
+
 use sysinfo::{System, SystemExt};
 
 pub mod cpu;
diff --git a/src/app/data_harvester/network.rs b/src/app/data_harvester/network.rs
index b4d32c29..9a40d5f7 100644
--- a/src/app/data_harvester/network.rs
+++ b/src/app/data_harvester/network.rs
@@ -1,7 +1,8 @@
+use std::time::Instant;
+
 use futures::StreamExt;
 use heim::net;
 use heim::units::information::byte;
-use std::time::Instant;
 use sysinfo::{NetworkExt, System, SystemExt};
 
 #[derive(Default, Clone, Debug)]
diff --git a/src/app/data_harvester/processes.rs b/src/app/data_harvester/processes.rs
index 9a2bc548..027781eb 100644
--- a/src/app/data_harvester/processes.rs
+++ b/src/app/data_harvester/processes.rs
@@ -1,10 +1,13 @@
-use crate::utils::error;
 use std::{
 	collections::{hash_map::RandomState, HashMap},
 	process::Command,
 	time::Instant,
 };
+
 use sysinfo::{ProcessExt, ProcessorExt, System, SystemExt};
+
+use crate::utils::error;
+
 #[derive(Clone)]
 pub enum ProcessSorting {
 	CPU,
diff --git a/src/app/data_harvester/temperature.rs b/src/app/data_harvester/temperature.rs
index 52500047..66d47e1e 100644
--- a/src/app/data_harvester/temperature.rs
+++ b/src/app/data_harvester/temperature.rs
@@ -1,6 +1,7 @@
+use std::cmp::Ordering;
+
 use futures::StreamExt;
 use heim::units::thermodynamic_temperature;
-use std::cmp::Ordering;
 use sysinfo::{ComponentExt, System, SystemExt};
 
 #[derive(Default, Debug, Clone)]
diff --git a/src/app/process_killer.rs b/src/app/process_killer.rs
index 85b5b402..d2089aad 100644
--- a/src/app/process_killer.rs
+++ b/src/app/process_killer.rs
@@ -1,5 +1,3 @@
-/// This file is meant to house (OS specific) implementations on how to kill processes.
-use crate::utils::error::BottomError;
 use std::process::Command;
 
 // Copied from SO: https://stackoverflow.com/a/55231715
@@ -12,6 +10,9 @@ use winapi::{
 	},
 };
 
+/// This file is meant to house (OS specific) implementations on how to kill processes.
+use crate::utils::error::BottomError;
+
 #[cfg(target_os = "windows")]
 struct Process(HANDLE);
 
diff --git a/src/canvas.rs b/src/canvas.rs
index 38070a5e..64d325fe 100644
--- a/src/canvas.rs
+++ b/src/canvas.rs
@@ -1,11 +1,6 @@
-use crate::{
-	app::{self, data_harvester::processes::ProcessHarvest, WidgetPosition},
-	constants::*,
-	data_conversion::{ConvertedCpuData, ConvertedProcessData},
-	utils::error,
-};
 use std::cmp::max;
 use std::collections::HashMap;
+
 use tui::{
 	backend,
 	layout::{Alignment, Constraint, Direction, Layout, Rect},
@@ -17,12 +12,19 @@ use tui::{
 use unicode_segmentation::UnicodeSegmentation;
 use unicode_width::UnicodeWidthStr;
 
-mod canvas_colours;
 use canvas_colours::*;
-
-mod drawing_utils;
 use drawing_utils::*;
 
+use crate::{
+	app::{self, data_harvester::processes::ProcessHarvest, WidgetPosition},
+	constants::*,
+	data_conversion::{ConvertedCpuData, ConvertedProcessData},
+	utils::error,
+};
+
+mod canvas_colours;
+mod drawing_utils;
+
 // Headers
 const CPU_LEGEND_HEADER: [&str; 2] = ["CPU", "Use%"];
 const CPU_SELECT_LEGEND_HEADER: [&str; 2] = ["CPU", "Show (Space)"];
@@ -620,12 +622,12 @@ impl Painter {
 	fn draw_cpu_legend<B: backend::Backend>(
 		&self, f: &mut Frame<'_, B>, app_state: &mut app::App, draw_loc: Rect,
 	) {
-		let cpu_data: &[ConvertedCpuData] = &(app_state.canvas_data.cpu_data);
+		let cpu_data: &[ConvertedCpuData] = &app_state.canvas_data.cpu_data;
 
 		let num_rows = max(0, i64::from(draw_loc.height) - 5) as u64;
 		let start_position = get_start_position(
 			num_rows,
-			&(app_state.app_scroll_positions.scroll_direction),
+			&app_state.app_scroll_positions.scroll_direction,
 			&mut app_state
 				.app_scroll_positions
 				.cpu_scroll_state
@@ -766,8 +768,8 @@ impl Painter {
 	fn draw_memory_graph<B: backend::Backend>(
 		&self, f: &mut Frame<'_, B>, app_state: &app::App, draw_loc: Rect,
 	) {
-		let mem_data: &[(f64, f64)] = &(app_state.canvas_data.mem_data);
-		let swap_data: &[(f64, f64)] = &(app_state.canvas_data.swap_data);
+		let mem_data: &[(f64, f64)] = &app_state.canvas_data.mem_data;
+		let swap_data: &[(f64, f64)] = &app_state.canvas_data.swap_data;
 
 		let x_axis: Axis<'_, String> = Axis::default().bounds([0.0, TIME_STARTS_FROM as f64]);
 
@@ -839,8 +841,8 @@ impl Painter {
 	fn draw_network_graph<B: backend::Backend>(
 		&self, f: &mut Frame<'_, B>, app_state: &app::App, draw_loc: Rect,
 	) {
-		let network_data_rx: &[(f64, f64)] = &(app_state.canvas_data.network_data_rx);
-		let network_data_tx: &[(f64, f64)] = &(app_state.canvas_data.network_data_tx);
+		let network_data_rx: &[(f64, f64)] = &app_state.canvas_data.network_data_rx;
+		let network_data_tx: &[(f64, f64)] = &app_state.canvas_data.network_data_tx;
 
 		let x_axis: Axis<'_, String> = Axis::default().bounds([0.0, 60_000.0]);
 		let y_axis: Axis<'_, &str> = Axis::default()
@@ -938,7 +940,7 @@ impl Painter {
 
 		// Calculate widths
 		let width_ratios: Vec<f64> = vec![0.25, 0.25, 0.25, 0.25];
-		let lens: &Vec<usize> = &NETWORK_HEADERS_LENS;
+		let lens: &[usize] = &NETWORK_HEADERS_LENS;
 		let width = f64::from(draw_loc.width);
 
 		let variable_intrinsic_results =
@@ -967,12 +969,12 @@ impl Painter {
 	fn draw_temp_table<B: backend::Backend>(
 		&self, f: &mut Frame<'_, B>, app_state: &mut app::App, draw_loc: Rect,
 	) {
-		let temp_sensor_data: &[Vec<String>] = &(app_state.canvas_data.temp_sensor_data);
+		let temp_sensor_data: &[Vec<String>] = &app_state.canvas_data.temp_sensor_data;
 
 		let num_rows = max(0, i64::from(draw_loc.height) - 5) as u64;
 		let start_position = get_start_position(
 			num_rows,
-			&(app_state.app_scroll_positions.scroll_direction),
+			&app_state.app_scroll_positions.scroll_direction,
 			&mut app_state
 				.app_scroll_positions
 				.temp_scroll_state
@@ -984,7 +986,7 @@ impl Painter {
 			app_state.is_resized,
 		);
 
-		let sliced_vec = &(temp_sensor_data[start_position as usize..]);
+		let sliced_vec = &temp_sensor_data[start_position as usize..];
 		let mut temp_row_counter: i64 = 0;
 
 		let temperature_rows = sliced_vec.iter().map(|temp_row| {
@@ -1064,11 +1066,11 @@ impl Painter {
 	fn draw_disk_table<B: backend::Backend>(
 		&self, f: &mut Frame<'_, B>, app_state: &mut app::App, draw_loc: Rect,
 	) {
-		let disk_data: &[Vec<String>] = &(app_state.canvas_data.disk_data);
+		let disk_data: &[Vec<String>] = &app_state.canvas_data.disk_data;
 		let num_rows = max(0, i64::from(draw_loc.height) - 5) as u64;
 		let start_position = get_start_position(
 			num_rows,
-			&(app_state.app_scroll_positions.scroll_direction),
+			&app_state.app_scroll_positions.scroll_direction,
 			&mut app_state
 				.app_scroll_positions
 				.disk_scroll_state
@@ -1350,7 +1352,7 @@ impl Painter {
 
 		let position = get_start_position(
 			num_rows,
-			&(app_state.app_scroll_positions.scroll_direction),
+			&app_state.app_scroll_positions.scroll_direction,
 			&mut app_state
 				.app_scroll_positions
 				.process_scroll_state
@@ -1369,7 +1371,7 @@ impl Painter {
 			position
 		};
 
-		let sliced_vec = &(process_data[start_position as usize..]);
+		let sliced_vec = &process_data[start_position as usize..];
 		let mut process_counter: i64 = 0;
 
 		// Draw!
diff --git a/src/canvas/canvas_colours.rs b/src/canvas/canvas_colours.rs
index 949a90c5..27cc228f 100644
--- a/src/canvas/canvas_colours.rs
+++ b/src/canvas/canvas_colours.rs
@@ -1,9 +1,11 @@
-mod colour_utils;
-use colour_utils::*;
 use tui::style::{Color, Modifier, Style};
 
+use colour_utils::*;
+
 use crate::{constants::*, utils::error};
 
+mod colour_utils;
+
 pub struct CanvasColours {
 	pub currently_selected_text_colour: Color,
 	pub currently_selected_bg_colour: Color,
diff --git a/src/canvas/canvas_colours/colour_utils.rs b/src/canvas/canvas_colours/colour_utils.rs
index c7e32a23..c7e2a1ae 100644
--- a/src/canvas/canvas_colours/colour_utils.rs
+++ b/src/canvas/canvas_colours/colour_utils.rs
@@ -1,7 +1,9 @@
-use crate::utils::{error, gen_util::*};
 use std::collections::HashMap;
+
 use tui::style::{Color, Style};
 
+use crate::utils::{error, gen_util::*};
+
 const GOLDEN_RATIO: f32 = 0.618_034; // Approx, good enough for use (also Clippy gets mad if it's too long)
 pub const STANDARD_FIRST_COLOUR: Color = Color::LightMagenta;
 pub const STANDARD_SECOND_COLOUR: Color = Color::LightYellow;
diff --git a/src/data_conversion.rs b/src/data_conversion.rs
index bbd51ee5..9302eae2 100644
--- a/src/data_conversion.rs
+++ b/src/data_conversion.rs
@@ -1,6 +1,10 @@
 //! This mainly concerns converting collected data into things that the canvas
 //! can actually handle.
 
+use std::collections::HashMap;
+
+use constants::*;
+
 use crate::{
 	app::{
 		data_farmer,
@@ -10,8 +14,6 @@ use crate::{
 	constants,
 	utils::gen_util::{get_exact_byte_values, get_simple_byte_values},
 };
-use constants::*;
-use std::collections::HashMap;
 
 #[derive(Default, Debug)]
 pub struct ConvertedNetworkData {
diff --git a/src/main.rs b/src/main.rs
index 47a63229..18061db6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,15 +1,22 @@
 #![warn(rust_2018_idioms)]
 
-#[macro_use]
-extern crate log;
 #[macro_use]
 extern crate clap;
 #[macro_use]
+extern crate futures;
+#[macro_use]
 extern crate lazy_static;
 #[macro_use]
-extern crate futures;
+extern crate log;
 
-use serde::Deserialize;
+use std::{
+	boxed::Box,
+	io::{stdout, Write},
+	panic::{self, PanicInfo},
+	sync::mpsc,
+	thread,
+	time::{Duration, Instant},
+};
 
 use crossterm::{
 	event::{
@@ -21,17 +28,17 @@ use crossterm::{
 	terminal::LeaveAlternateScreen,
 	terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen},
 };
-
-use std::{
-	boxed::Box,
-	io::{stdout, Write},
-	panic::{self, PanicInfo},
-	sync::mpsc,
-	thread,
-	time::{Duration, Instant},
-};
+use serde::Deserialize;
 use tui::{backend::CrosstermBackend, Terminal};
 
+use app::{
+	data_harvester::{self, processes::ProcessSorting},
+	App,
+};
+use constants::*;
+use data_conversion::*;
+use utils::error::{self, BottomError};
+
 pub mod app;
 mod utils {
 	pub mod error;
@@ -42,14 +49,6 @@ mod canvas;
 mod constants;
 mod data_conversion;
 
-use app::{
-	data_harvester::{self, processes::ProcessSorting},
-	App,
-};
-use constants::*;
-use data_conversion::*;
-use utils::error::{self, BottomError};
-
 enum Event<I, J> {
 	KeyInput(I),
 	MouseInput(J),
@@ -495,20 +494,20 @@ fn get_temperature_option(
 	} else if let Some(flags) = &config.flags {
 		if let Some(temp_type) = &flags.temperature_type {
 			// Give lowest priority to config.
-			match temp_type.as_str() {
+			return match temp_type.as_str() {
 				"fahrenheit" | "f" => {
-					return Ok(data_harvester::temperature::TemperatureType::Fahrenheit);
+					Ok(data_harvester::temperature::TemperatureType::Fahrenheit)
 				}
 				"kelvin" | "k" => {
-					return Ok(data_harvester::temperature::TemperatureType::Kelvin);
+					Ok(data_harvester::temperature::TemperatureType::Kelvin)
 				}
 				"celsius" | "c" => {
-					return Ok(data_harvester::temperature::TemperatureType::Celsius);
+					Ok(data_harvester::temperature::TemperatureType::Celsius)
 				}
 				_ => {
-					return Err(BottomError::ConfigError(
+					Err(BottomError::ConfigError(
 						"Invalid temperature type.  Please have the value be of the form <kelvin|k|celsius|c|fahrenheit|f>".to_string()
-					));
+					))
 				}
 			}
 		}
@@ -714,7 +713,7 @@ fn generate_config_colours(config: &Config, painter: &mut canvas::Painter) -> er
 			painter.colours.set_avg_cpu_colour(avg_cpu_color)?;
 		}
 
-		if let Some(cpu_core_colors) = &(colours.cpu_core_colors) {
+		if let Some(cpu_core_colors) = &colours.cpu_core_colors {
 			painter.colours.set_cpu_colours(cpu_core_colors)?;
 		}
 
diff --git a/tests/arg_rate_tests.rs b/tests/arg_rate_tests.rs
index 206dbf50..35afb4d2 100644
--- a/tests/arg_rate_tests.rs
+++ b/tests/arg_rate_tests.rs
@@ -1,6 +1,7 @@
+use std::process::Command;
+
 use assert_cmd::prelude::*;
 use predicates::prelude::*;
-use std::process::Command;
 
 // These tests are mostly here just to ensure that invalid results will be caught when passing arguments...