diff --git a/examples/counter.rs b/examples/counter.rs
index a301e4c98b56e3b63b839b2e48cf3240141f7f9d..303de77da4e2aaa56dd365f66d18c15e095bcb8a 100644
--- a/examples/counter.rs
+++ b/examples/counter.rs
@@ -5,9 +5,9 @@ use bevy::{
 };
 use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle};
 use kayak_ui::core::{
-    render, rsx, WidgetProps,
+    render, rsx,
     styles::{Style, StyleProp, Units},
-    use_state, widget, EventType, Index, OnEvent,
+    use_state, widget, EventType, Index, OnEvent, WidgetProps,
 };
 use kayak_ui::widgets::{App, Button, Text, Window};
 
diff --git a/examples/fold.rs b/examples/fold.rs
index f88ed605f289f04e5b167526f380aae01b5214b1..4fce8f540c9e60df946995ff292212c5e5b0d574 100644
--- a/examples/fold.rs
+++ b/examples/fold.rs
@@ -7,9 +7,9 @@ use bevy::{
 use kayak_ui::{
     bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle},
     core::{
-        render, rsx, WidgetProps,
+        render, rsx,
         styles::{Style, StyleProp, Units},
-        use_state, widget, Color, EventType, Handler, Index, OnEvent,
+        use_state, widget, Color, EventType, Handler, Index, OnEvent, WidgetProps,
     },
     widgets::{App, Background, Button, Fold, If, Text, Window},
 };
diff --git a/examples/full_ui.rs b/examples/full_ui.rs
index 2208c49bbbd276d52166470917972796b2a101e3..3b3bc352dd56aaf9fd38436ea7487eca40edc1a5 100644
--- a/examples/full_ui.rs
+++ b/examples/full_ui.rs
@@ -6,9 +6,9 @@ use bevy::{
 use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, ImageManager, UICameraBundle};
 use kayak_ui::core::{
     layout_cache::Space,
-    render, rsx, WidgetProps,
+    render, rsx,
     styles::{LayoutType, Style, StyleProp, Units},
-    widget, Bound, Children, EventType, Index, MutableBound, OnEvent,
+    widget, Bound, Children, EventType, Index, MutableBound, OnEvent, WidgetProps,
 };
 use kayak_ui::widgets::{App, NinePatch, Text};
 
@@ -17,7 +17,7 @@ struct BlueButtonProps {
     #[prop_field(Styles)]
     styles: Option<Style>,
     #[prop_field(Children)]
-    children: Option<Children>
+    children: Option<Children>,
 }
 
 #[widget]
diff --git a/examples/global_counter.rs b/examples/global_counter.rs
index e2fbb7e08b8af178be03c26127a4959d4572180e..12f757ba0a554f38d948bad62d0c349f8fa3aa21 100644
--- a/examples/global_counter.rs
+++ b/examples/global_counter.rs
@@ -4,7 +4,7 @@ use bevy::{
     DefaultPlugins,
 };
 use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle};
-use kayak_ui::core::{bind, render, rsx, widget, WidgetProps, Binding, Bound, Index, MutableBound};
+use kayak_ui::core::{bind, render, rsx, widget, Binding, Bound, Index, MutableBound, WidgetProps};
 use kayak_ui::widgets::{App, Text, Window};
 
 #[derive(Clone, PartialEq)]
diff --git a/examples/hooks.rs b/examples/hooks.rs
index a85973de04eb64fd6979397224b5ecb29313f7e5..72b5fb49aef3a22a32705e75793d5a2d592f72b4 100644
--- a/examples/hooks.rs
+++ b/examples/hooks.rs
@@ -16,7 +16,7 @@ use bevy::{
 };
 use kayak_ui::{
     bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle},
-    core::{render, rsx, use_effect, use_state, widget, WidgetProps, EventType, Index, OnEvent},
+    core::{render, rsx, use_effect, use_state, widget, EventType, Index, OnEvent, WidgetProps},
     widgets::{App, Button, Text, Window},
 };
 
diff --git a/examples/if.rs b/examples/if.rs
index 7120ce9f709dadf5534f60e1b20a49db18e16684..b123b26ace252ecccedf57ecd418f644d811ad10 100644
--- a/examples/if.rs
+++ b/examples/if.rs
@@ -5,9 +5,9 @@ use bevy::{
 };
 use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle};
 use kayak_ui::core::{
-    render, rsx, WidgetProps,
+    render, rsx,
     styles::{Style, StyleProp, Units},
-    widget, Bound, EventType, Index, MutableBound, OnEvent,
+    widget, Bound, EventType, Index, MutableBound, OnEvent, WidgetProps,
 };
 use kayak_ui::widgets::{App, Button, If, Text, Window};
 
diff --git a/examples/provider.rs b/examples/provider.rs
index 8a39f05bbda6ed8d379d91437082125adf3f2c7d..97afd7c5c22ec025439a221a97cec6aa743cfb6b 100644
--- a/examples/provider.rs
+++ b/examples/provider.rs
@@ -13,17 +13,17 @@
 use bevy::prelude::{
     App as BevyApp, AssetServer, Commands, DefaultPlugins, Res, ResMut, WindowDescriptor,
 };
+use kayak_core::Children;
 use kayak_ui::{
     bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle},
     core::{
-        render, rsx, WidgetProps,
+        render, rsx,
         styles::{LayoutType, Style, StyleProp, Units},
-        widget, Bound, Color, EventType, Index, MutableBound, OnEvent,
+        widget, Bound, Color, EventType, Index, MutableBound, OnEvent, WidgetProps,
     },
     widgets::{App, Background, Element, If, Text, TooltipConsumer, TooltipProvider, Window},
 };
 use std::sync::Arc;
-use kayak_core::Children;
 
 /// The color theme struct we will be using across our demo widgets
 #[derive(Debug, Default, Clone, PartialEq)]
@@ -74,7 +74,10 @@ struct ThemeProviderProps {
 /// It can also be nested within itself, allowing for differing provider values.
 #[widget]
 fn ThemeProvider(props: ThemeProviderProps) {
-    let ThemeProviderProps { initial_theme, children } = props.clone();
+    let ThemeProviderProps {
+        initial_theme,
+        children,
+    } = props.clone();
     // Create the provider
     context.create_provider(initial_theme);
     rsx! { <>{children}</> }
@@ -166,7 +169,7 @@ fn ThemeSelector(props: ThemeSelectorProps) {
 
 #[derive(WidgetProps, Clone, Debug, Default, PartialEq)]
 struct ThemeDemoProps {
-    is_root: bool
+    is_root: bool,
 }
 
 /// A widget that demonstrates the theming in action
diff --git a/examples/tabs/tab.rs b/examples/tabs/tab.rs
index dd2eeae602b66db2062438678d0a08f14ea2d37f..428c55aa6e4ce1ce3f0d314c35dc3edf342301d8 100644
--- a/examples/tabs/tab.rs
+++ b/examples/tabs/tab.rs
@@ -1,9 +1,9 @@
 use kayak_ui::{
     core::{
         render_command::RenderCommand,
-        rsx, WidgetProps,
+        rsx,
         styles::{LayoutType, Style, StyleProp, Units},
-        use_state, widget, Bound, EventType, OnEvent,
+        use_state, widget, Bound, EventType, OnEvent, WidgetProps,
     },
     widgets::{Background, Text},
 };
@@ -30,7 +30,9 @@ pub struct TabProps {
 /// The actual tab, displayed in a [TabBar](crate::tab_bar::TabBar)
 #[widget]
 pub fn Tab(props: TabProps) {
-    let TabProps{content, selected, ..} = props.clone();
+    let TabProps {
+        content, selected, ..
+    } = props.clone();
 
     let theme = context.create_consumer::<TabTheme>().unwrap_or_default();
     let (focus_state, set_focus_state, ..) = use_state!(false);
diff --git a/examples/tabs/tab_bar.rs b/examples/tabs/tab_bar.rs
index b382ea62228d1cef5ec17a945d50ba8e2492ba3e..083e4153a98d653e98f6a4caf2a2fcb9fcd8fc7b 100644
--- a/examples/tabs/tab_bar.rs
+++ b/examples/tabs/tab_bar.rs
@@ -1,8 +1,8 @@
 use kayak_ui::{
     core::{
-        constructor, rsx, WidgetProps,
+        constructor, rsx,
         styles::{LayoutType, Style, StyleProp, Units},
-        widget, Bound, EventType, Handler, KeyCode, OnEvent, VecTracker,
+        widget, Bound, EventType, Handler, KeyCode, OnEvent, VecTracker, WidgetProps,
     },
     widgets::Background,
 };
@@ -16,13 +16,18 @@ pub struct TabBarProps {
     pub selected: usize,
     pub on_select_tab: Handler<usize>,
     #[prop_field(Styles)]
-    pub styles: Option<Style>
+    pub styles: Option<Style>,
 }
 
 /// A widget displaying a collection of tabs in a horizontal bar
 #[widget]
 pub fn TabBar(props: TabBarProps) {
-    let TabBarProps{on_select_tab, selected, tabs, ..} = props.clone();
+    let TabBarProps {
+        on_select_tab,
+        selected,
+        tabs,
+        ..
+    } = props.clone();
     let theme = context.create_consumer::<TabTheme>().unwrap_or_default();
 
     let tabs = tabs.into_iter().enumerate().map(move |(index, tab)| {
diff --git a/examples/tabs/tab_box.rs b/examples/tabs/tab_box.rs
index 413130776683612d2f5f302abb9ea7bfbf96fbae..8de0c477f226ab6ab3322c04cec22b6a2cf8257b 100644
--- a/examples/tabs/tab_box.rs
+++ b/examples/tabs/tab_box.rs
@@ -1,8 +1,8 @@
 use kayak_ui::core::{
     render_command::RenderCommand,
-    rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp},
-    use_state, widget, Bound, Fragment, Handler,
+    use_state, widget, Bound, Fragment, Handler, WidgetProps,
 };
 use std::fmt::Debug;
 
@@ -31,7 +31,9 @@ pub struct TabBoxProps {
 /// This houses both the tab bar and its content.
 #[widget]
 pub fn TabBox(props: TabBoxProps) {
-    let TabBoxProps { initial_tab, tabs, .. } = props.clone();
+    let TabBoxProps {
+        initial_tab, tabs, ..
+    } = props.clone();
     let theme = context.create_consumer::<TabTheme>().unwrap_or_default();
     let (selected, set_selected, ..) = use_state!(initial_tab);
 
diff --git a/examples/tabs/tab_content.rs b/examples/tabs/tab_content.rs
index afae825f268cee66f4e98e2245a453809d1e79ce..3d3c4dae89c14fd558f974910de07395e08a8180 100644
--- a/examples/tabs/tab_content.rs
+++ b/examples/tabs/tab_content.rs
@@ -1,8 +1,8 @@
 use kayak_ui::core::{
     render_command::RenderCommand,
-    rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp},
-    widget, Bound, Fragment, VecTracker,
+    widget, Bound, Fragment, VecTracker, WidgetProps,
 };
 use std::ops::Index;
 
diff --git a/examples/tabs/tabs.rs b/examples/tabs/tabs.rs
index 04e9b3d3cdb3973084389d1f8b9dd4400f472c74..7fd216c9dd0711c22b46da1e4fbb02f410fa4d40 100644
--- a/examples/tabs/tabs.rs
+++ b/examples/tabs/tabs.rs
@@ -13,9 +13,9 @@ use bevy::{
 use kayak_ui::{
     bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle},
     core::{
-        constructor, render, rsx, WidgetProps,
+        constructor, render, rsx,
         styles::{Style, StyleProp, Units},
-        widget, Color, Index,
+        widget, Color, Index, WidgetProps,
     },
     widgets::{App, Text, Window},
 };
diff --git a/examples/tabs/theming.rs b/examples/tabs/theming.rs
index 41f3f29b26d9ba95eee7118b7e143498cdaf0c0e..e8feaa495cf95bb99ab99815de1f5de7d4cc8e64 100644
--- a/examples/tabs/theming.rs
+++ b/examples/tabs/theming.rs
@@ -1,4 +1,4 @@
-use kayak_ui::core::{Children, rsx, widget, Color, WidgetProps};
+use kayak_ui::core::{rsx, widget, Children, Color, WidgetProps};
 
 #[derive(Clone, Copy, Debug, Default, PartialEq)]
 pub struct TabTheme {
@@ -23,12 +23,15 @@ pub struct ColorState {
 pub struct TabThemeProviderProps {
     pub initial_theme: TabTheme,
     #[prop_field(Children)]
-    pub children: Option<Children>
+    pub children: Option<Children>,
 }
 
 #[widget]
 pub fn TabThemeProvider(props: TabThemeProviderProps) {
-    let TabThemeProviderProps { initial_theme, children } = props.clone();
+    let TabThemeProviderProps {
+        initial_theme,
+        children,
+    } = props.clone();
     context.create_provider(initial_theme);
     rsx! { <>{children}</> }
 }
diff --git a/examples/text_box.rs b/examples/text_box.rs
index bfaf2fc589e17ec0c3b849244444fb54c4dba24d..c98a8a426063e3b9b90884d60e6c237fba694eea 100644
--- a/examples/text_box.rs
+++ b/examples/text_box.rs
@@ -7,9 +7,9 @@ use kayak_core::Color;
 use kayak_render_macros::use_state;
 use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle};
 use kayak_ui::core::{
-    render, rsx, WidgetProps,
+    render, rsx,
     styles::{Style, StyleProp, Units},
-    widget, Index,
+    widget, Index, WidgetProps,
 };
 use kayak_ui::widgets::{App, OnChange, TextBox, Window};
 
diff --git a/examples/todo/add_button.rs b/examples/todo/add_button.rs
index d6143fa0f2cff12fb2bcc5a9555de2232c76131f..905256a1a1fd873422eacc65a58a52becce2ec3c 100644
--- a/examples/todo/add_button.rs
+++ b/examples/todo/add_button.rs
@@ -1,9 +1,9 @@
 use kayak_ui::core::{
     color::Color,
     render_command::RenderCommand,
-    rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp, Units},
-    use_state, widget, EventType, OnEvent,
+    use_state, widget, EventType, OnEvent, WidgetProps,
 };
 
 use kayak_ui::widgets::{Background, Text};
diff --git a/examples/todo/card.rs b/examples/todo/card.rs
index b9b06183e4e27b4b80d86963416f6b8f8f29de9f..790a2d8ea1ca2a20178126404ef69edfc465c005 100644
--- a/examples/todo/card.rs
+++ b/examples/todo/card.rs
@@ -1,7 +1,7 @@
 use kayak_ui::core::{
-    rsx, WidgetProps,
+    rsx,
     styles::{LayoutType, Style, StyleProp, Units},
-    widget, Color, EventType, Handler, OnEvent,
+    widget, Color, EventType, Handler, OnEvent, WidgetProps,
 };
 use kayak_ui::widgets::{Background, Text};
 
@@ -16,7 +16,11 @@ pub struct CardProps {
 
 #[widget]
 pub fn Card(props: CardProps) {
-    let CardProps{card_id, name, on_delete} = props.clone();
+    let CardProps {
+        card_id,
+        name,
+        on_delete,
+    } = props.clone();
     let background_styles = Style {
         layout_type: StyleProp::Value(LayoutType::Row),
         background_color: StyleProp::Value(Color::new(0.176, 0.196, 0.215, 1.0)),
diff --git a/examples/todo/delete_button.rs b/examples/todo/delete_button.rs
index 34d572960bc80d3fe753db1fe3ef064f16ef85db..86bb0074711e9ce4a04f36c6a2bc41e75be384ce 100644
--- a/examples/todo/delete_button.rs
+++ b/examples/todo/delete_button.rs
@@ -1,9 +1,9 @@
 use kayak_ui::core::{
     color::Color,
     render_command::RenderCommand,
-    rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp, Units},
-    use_state, widget, EventType, OnEvent,
+    use_state, widget, EventType, OnEvent, WidgetProps,
 };
 
 use kayak_ui::widgets::{Background, Text};
diff --git a/examples/todo/todo.rs b/examples/todo/todo.rs
index 95b063cbeac85989bbdf1116ebefa294a1b3ab79..10ee013d744fd03d1ed0a33efbdce7887cd6443f 100644
--- a/examples/todo/todo.rs
+++ b/examples/todo/todo.rs
@@ -5,9 +5,9 @@ use bevy::{
 };
 use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle};
 use kayak_ui::core::{
-    render, rsx, WidgetProps,
+    render, rsx,
     styles::{LayoutType, Style, StyleProp, Units},
-    use_state, widget, EventType, Handler, Index, OnEvent,
+    use_state, widget, EventType, Handler, Index, OnEvent, WidgetProps,
 };
 use kayak_ui::widgets::{App, Element, OnChange, TextBox, Window};
 
diff --git a/examples/world_interaction.rs b/examples/world_interaction.rs
index 96633098a28bd4e7c07f3e32534b18d82a712605..44a1f1408ca0137b4fc74da2cd9c1c96e3b9e26c 100644
--- a/examples/world_interaction.rs
+++ b/examples/world_interaction.rs
@@ -18,9 +18,9 @@ use bevy::{
 use kayak_ui::{
     bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle},
     core::{
-        render, rsx, WidgetProps,
+        render, rsx,
         styles::{Style, StyleProp, Units},
-        use_state, widget, EventType, Index, OnEvent,
+        use_state, widget, EventType, Index, OnEvent, WidgetProps,
     },
     widgets::{App, Button, Text, Window},
 };
diff --git a/kayak_core/src/children.rs b/kayak_core/src/children.rs
index 3bb67f6490a427f677b46d3996c345b6883d04ed..7388874888227e65f181f1a08d7deef0f2739dfc 100644
--- a/kayak_core/src/children.rs
+++ b/kayak_core/src/children.rs
@@ -1,13 +1,15 @@
+use crate::{Index, KayakContextRef};
 use std::fmt::{Debug, Formatter};
 use std::sync::Arc;
-use crate::{Index, KayakContextRef};
 
 /// A container for a function that generates child widgets
 #[derive(Clone)]
 pub struct Children(Arc<dyn Fn(Option<Index>, &mut KayakContextRef) + Send + Sync>);
 
 impl Children {
-    pub fn new<F: Fn(Option<Index>, &mut KayakContextRef) + Send + Sync + 'static>(builder: F) -> Self {
+    pub fn new<F: Fn(Option<Index>, &mut KayakContextRef) + Send + Sync + 'static>(
+        builder: F,
+    ) -> Self {
         Self(Arc::new(builder))
     }
     pub fn build(&self, id: Option<Index>, context: &mut KayakContextRef) {
@@ -26,4 +28,4 @@ impl PartialEq for Children {
         // Never prevent "==" for being true because of this struct
         true
     }
-}
\ No newline at end of file
+}
diff --git a/kayak_core/src/context_ref.rs b/kayak_core/src/context_ref.rs
index 534b5b89e30dc1e3215aaf80767e89bb54e1e211..b0710db3e4dafd386e7fab41dcaccfbd4dea90ed 100644
--- a/kayak_core/src/context_ref.rs
+++ b/kayak_core/src/context_ref.rs
@@ -228,11 +228,7 @@ impl<'a> KayakContextRef<'a> {
 
     /// Adds a widget to the context reference tree that will be committed to the main tree when `commit` is called.
     /// This also adds the widget to the `KayakContext` and renders the new widget.
-    pub fn add_widget<W: crate::Widget>(
-        &mut self,
-        widget: W,
-        widget_index: usize,
-    ) {
+    pub fn add_widget<W: crate::Widget>(&mut self, widget: W, widget_index: usize) {
         let (_, child_id) =
             self.context
                 .widget_manager
diff --git a/kayak_core/src/event_dispatcher.rs b/kayak_core/src/event_dispatcher.rs
index 2b02c475f7a754c24effc0d416102b290de05a76..6bf35bfb40f0569fa8ed1b06544e83f365dd9792 100644
--- a/kayak_core/src/event_dispatcher.rs
+++ b/kayak_core/src/event_dispatcher.rs
@@ -4,7 +4,10 @@ use crate::cursor::CursorEvent;
 use crate::layout_cache::Rect;
 use crate::render_command::RenderCommand;
 use crate::widget_manager::WidgetManager;
-use crate::{Event, EventType, Index, InputEvent, InputEventCategory, KayakContext, KeyCode, KeyboardEvent, KeyboardModifiers, PointerEvents, BoxedWidget};
+use crate::{
+    BoxedWidget, Event, EventType, Index, InputEvent, InputEventCategory, KayakContext, KeyCode,
+    KeyboardEvent, KeyboardModifiers, PointerEvents,
+};
 use std::collections::{HashMap, HashSet};
 
 type EventMap = HashMap<Index, HashSet<EventType>>;
diff --git a/kayak_core/src/fragment.rs b/kayak_core/src/fragment.rs
index 16043d677c00cac966fbf66ffd45a4adc70c366a..28151384c39d28265c84a3b386cb048862eb93eb 100644
--- a/kayak_core/src/fragment.rs
+++ b/kayak_core/src/fragment.rs
@@ -1,4 +1,6 @@
-use crate::{context_ref::KayakContextRef, styles::Style, Index, Widget, WidgetProps, Children, OnEvent};
+use crate::{
+    context_ref::KayakContextRef, styles::Style, Children, Index, OnEvent, Widget, WidgetProps,
+};
 
 #[derive(Default, Debug, PartialEq, Clone)]
 pub struct FragmentProps {
@@ -37,7 +39,10 @@ impl WidgetProps for FragmentProps {
 impl Widget for Fragment {
     type Props = FragmentProps;
 
-    fn constructor(props: Self::Props) -> Self where Self: Sized {
+    fn constructor(props: Self::Props) -> Self
+    where
+        Self: Sized,
+    {
         Self {
             id: Index::default(),
             props,
diff --git a/kayak_core/src/lib.rs b/kayak_core/src/lib.rs
index 2db69fe19dff7e187ac813fecd4a80d67e25fa51..ad4100669a89e958a5ead55b4fb997b10e4c72df 100644
--- a/kayak_core/src/lib.rs
+++ b/kayak_core/src/lib.rs
@@ -1,5 +1,6 @@
 mod assets;
 mod binding;
+mod children;
 pub mod color;
 pub mod context;
 mod context_ref;
@@ -16,6 +17,7 @@ mod keys;
 pub mod layout_cache;
 mod multi_state;
 pub mod node;
+mod on_event;
 pub mod render_command;
 pub mod render_primitive;
 pub mod styles;
@@ -23,8 +25,6 @@ pub mod tree;
 mod vec;
 pub mod widget;
 pub mod widget_manager;
-mod children;
-mod on_event;
 
 use std::sync::{Arc, RwLock};
 
diff --git a/kayak_core/src/on_event.rs b/kayak_core/src/on_event.rs
index c2fcb26d8ecab1ba5fc8cfaa6491050de5bd859a..fe6650948bb3f851ff910ee2f58e877d585badc6 100644
--- a/kayak_core/src/on_event.rs
+++ b/kayak_core/src/on_event.rs
@@ -1,14 +1,10 @@
+use crate::{Event, KayakContext};
 use std::fmt::{Debug, Formatter};
 use std::sync::{Arc, RwLock};
-use crate::{Event, KayakContext};
 
 /// A container for a function that handles events
 #[derive(Clone)]
-pub struct OnEvent(
-    Arc<
-        RwLock<dyn FnMut(&mut KayakContext, &mut Event) + Send + Sync + 'static>,
-    >,
-);
+pub struct OnEvent(Arc<RwLock<dyn FnMut(&mut KayakContext, &mut Event) + Send + Sync + 'static>>);
 
 impl OnEvent {
     /// Create a new event handler
@@ -16,9 +12,7 @@ impl OnEvent {
     /// The handler should be a closure that takes the following arguments:
     /// 1. The current context
     /// 2. The event
-    pub fn new<F: FnMut(&mut KayakContext, &mut Event) + Send + Sync + 'static>(
-        f: F,
-    ) -> OnEvent {
+    pub fn new<F: FnMut(&mut KayakContext, &mut Event) + Send + Sync + 'static>(f: F) -> OnEvent {
         OnEvent(Arc::new(RwLock::new(f)))
     }
 
@@ -46,4 +40,4 @@ impl PartialEq for OnEvent {
         // Never prevent "==" for being true because of this struct
         true
     }
-}
\ No newline at end of file
+}
diff --git a/kayak_core/src/vec.rs b/kayak_core/src/vec.rs
index 4a3142c994b42a4412561d8c55d43e101cc109b4..502a9359500658fe3609e25b3a62f2863afe542c 100644
--- a/kayak_core/src/vec.rs
+++ b/kayak_core/src/vec.rs
@@ -1,4 +1,6 @@
-use crate::{context_ref::KayakContextRef, styles::Style, Index, Widget, Children, OnEvent, WidgetProps};
+use crate::{
+    context_ref::KayakContextRef, styles::Style, Children, Index, OnEvent, Widget, WidgetProps,
+};
 
 #[derive(Default, Debug, PartialEq, Clone)]
 pub struct VecTrackerProps<T> {
@@ -31,8 +33,8 @@ impl<T> VecTracker<T> {
 }
 
 impl<T, I> From<I> for VecTracker<T>
-    where
-        I: Iterator<Item=T>,
+where
+    I: Iterator<Item = T>,
 {
     fn from(iter: I) -> Self {
         Self::new(iter.collect())
@@ -40,9 +42,9 @@ impl<T, I> From<I> for VecTracker<T>
 }
 
 impl<T> WidgetProps for VecTrackerProps<T>
-    where
-        T: Widget, {
-
+where
+    T: Widget,
+{
     fn get_children(&self) -> Option<Children> {
         self.children.clone()
     }
@@ -65,12 +67,15 @@ impl<T> WidgetProps for VecTrackerProps<T>
 }
 
 impl<T> Widget for VecTracker<T>
-    where
-        T: Widget,
+where
+    T: Widget,
 {
     type Props = VecTrackerProps<T>;
 
-    fn constructor(props: Self::Props) -> Self where Self: Sized {
+    fn constructor(props: Self::Props) -> Self
+    where
+        Self: Sized,
+    {
         Self {
             id: Index::default(),
             props,
diff --git a/kayak_core/src/widget.rs b/kayak_core/src/widget.rs
index a706535daa13f09d0c4fa1bdb44abf4a6af8739f..4535d5533cc29ab229ae92f65c46a676d6ee6216 100644
--- a/kayak_core/src/widget.rs
+++ b/kayak_core/src/widget.rs
@@ -1,7 +1,10 @@
-use std::any::Any;
 use as_any::AsAny;
+use std::any::Any;
 
-use crate::{context::KayakContext, context_ref::KayakContextRef, styles::Style, Event, Index, OnEvent, Children};
+use crate::{
+    context::KayakContext, context_ref::KayakContextRef, styles::Style, Children, Event, Index,
+    OnEvent,
+};
 
 /// An internal trait that has a blanket implementation over all implementors of [Widget]
 ///
@@ -14,7 +17,9 @@ pub trait SealedWidget {}
 /// You should _never_ implement BaseWidget manually. It is automatically implemented on
 /// all implementors of [Widget].
 pub trait BaseWidget: SealedWidget + std::fmt::Debug + Send + Sync {
-    fn constructor<P: WidgetProps>(props: P) -> Self where Self: Sized;
+    fn constructor<P: WidgetProps>(props: P) -> Self
+    where
+        Self: Sized;
     fn get_id(&self) -> Index;
     fn set_id(&mut self, id: Index);
     fn get_props(&self) -> &dyn WidgetProps;
@@ -29,7 +34,9 @@ pub trait Widget: std::fmt::Debug + Clone + Default + PartialEq + AsAny + Send +
     type Props: WidgetProps + Clone + Default + PartialEq;
 
     /// Construct the widget with the given props
-    fn constructor(props: Self::Props) -> Self where Self: Sized;
+    fn constructor(props: Self::Props) -> Self
+    where
+        Self: Sized;
 
     /// Get this widget's ID
     fn get_id(&self) -> Index;
@@ -74,8 +81,14 @@ pub trait WidgetProps: std::fmt::Debug + AsAny + Send + Sync {
     fn get_focusable(&self) -> Option<bool>;
 }
 
-impl<T> BaseWidget for T where T: Widget + Clone + PartialEq + Default  {
-    fn constructor<P: WidgetProps>(props: P) -> Self where Self: Sized {
+impl<T> BaseWidget for T
+where
+    T: Widget + Clone + PartialEq + Default,
+{
+    fn constructor<P: WidgetProps>(props: P) -> Self
+    where
+        Self: Sized,
+    {
         let props: Box<dyn Any> = Box::new(props);
         Widget::constructor(*props.downcast::<<T as Widget>::Props>().unwrap())
     }
@@ -109,4 +122,4 @@ impl<T> BaseWidget for T where T: Widget + Clone + PartialEq + Default  {
     }
 }
 
-impl<T> SealedWidget for T where T: Widget {}
\ No newline at end of file
+impl<T> SealedWidget for T where T: Widget {}
diff --git a/kayak_core/src/widget_manager.rs b/kayak_core/src/widget_manager.rs
index 4ac3f03ef4bbbc991a27ae1782b8e766c36498b7..9ed82f019289345f038e492d478e0b160cb1e0da 100644
--- a/kayak_core/src/widget_manager.rs
+++ b/kayak_core/src/widget_manager.rs
@@ -4,7 +4,17 @@ use std::{
 };
 
 use crate::layout_cache::Rect;
-use crate::{focus_tree::FocusTracker, focus_tree::FocusTree, layout_cache::LayoutCache, node::{Node, NodeBuilder}, render_command::RenderCommand, render_primitive::RenderPrimitive, styles::Style, tree::Tree, Arena, Index, Widget, WidgetProps, BoxedWidget};
+use crate::{
+    focus_tree::FocusTracker,
+    focus_tree::FocusTree,
+    layout_cache::LayoutCache,
+    node::{Node, NodeBuilder},
+    render_command::RenderCommand,
+    render_primitive::RenderPrimitive,
+    styles::Style,
+    tree::Tree,
+    Arena, BoxedWidget, Index, Widget, WidgetProps,
+};
 // use as_any::Downcast;
 
 #[derive(Debug)]
diff --git a/kayak_render_macros/src/children.rs b/kayak_render_macros/src/children.rs
index 4b9ef3b2e705289381aaf59765ea202a56d04db6..b34575310ea3bb19afcda44221b37a7315ac213e 100644
--- a/kayak_render_macros/src/children.rs
+++ b/kayak_render_macros/src/children.rs
@@ -1,6 +1,11 @@
 use std::collections::HashSet;
 
-use crate::{widget_builder::build_widget_stream, attribute::Attribute, child::{walk_block_to_variable, Child}, get_core_crate};
+use crate::{
+    attribute::Attribute,
+    child::{walk_block_to_variable, Child},
+    get_core_crate,
+    widget_builder::build_widget_stream,
+};
 use quote::{quote, ToTokens};
 use syn::parse::{Parse, ParseStream, Result};
 
@@ -144,7 +149,8 @@ impl Children {
                 for i in 0..children_quotes.len() {
                     output.push(quote! { #base_clones_inner });
                     let name: proc_macro2::TokenStream = format!("child{}", i).parse().unwrap();
-                    let child = build_widget_stream(quote! { #name }, children_quotes[i].clone(), i);
+                    let child =
+                        build_widget_stream(quote! { #name }, children_quotes[i].clone(), i);
                     output.push(quote! { #child });
                 }
 
diff --git a/kayak_render_macros/src/function_component.rs b/kayak_render_macros/src/function_component.rs
index 10c6a1ec3c26d349b2fa0ebceb47da0dbb44cd52..e5b3cff399c4f9470a0f24cefbe6086145e96233 100644
--- a/kayak_render_macros/src/function_component.rs
+++ b/kayak_render_macros/src/function_component.rs
@@ -1,9 +1,9 @@
+use crate::get_core_crate;
 use proc_macro::TokenStream;
 use proc_macro_error::emit_error;
 use quote::quote;
-use syn::{FnArg, Pat, Type};
 use syn::spanned::Spanned;
-use crate::get_core_crate;
+use syn::{FnArg, Pat, Type};
 
 pub struct WidgetArguments {
     pub focusable: bool,
@@ -25,15 +25,17 @@ pub fn create_function_widget(f: syn::ItemFn, _widget_arguments: WidgetArguments
         } else {
             f.sig.span()
         };
-        emit_error!(span, "Functional widgets expect exactly one argument (their props), but was given {}", f.sig.inputs.len());
+        emit_error!(
+            span,
+            "Functional widgets expect exactly one argument (their props), but was given {}",
+            f.sig.inputs.len()
+        );
     }
 
     let (props, prop_type) = match f.sig.inputs.first().unwrap() {
         FnArg::Typed(typed) => {
             let ident = match *typed.pat.clone() {
-                Pat::Ident(ident) => {
-                    ident.ident
-                }
+                Pat::Ident(ident) => ident.ident,
                 err => {
                     emit_error!(err.span(), "Expected identifier, but got {:?}", err);
                     return TokenStream::new();
@@ -41,9 +43,7 @@ pub fn create_function_widget(f: syn::ItemFn, _widget_arguments: WidgetArguments
             };
 
             let ty = match *typed.ty.clone() {
-                Type::Path(type_path) => {
-                    type_path.path
-                }
+                Type::Path(type_path) => type_path.path,
                 err => {
                     emit_error!(err.span(), "Invalid widget prop type: {:?}", err);
                     return TokenStream::new();
@@ -63,7 +63,6 @@ pub fn create_function_widget(f: syn::ItemFn, _widget_arguments: WidgetArguments
 
     let kayak_core = get_core_crate();
 
-
     // TODO: See if this is still needed. If not, remove it
     // let mut input_names: Vec<_> = inputs
     //     .iter()
diff --git a/kayak_render_macros/src/tags.rs b/kayak_render_macros/src/tags.rs
index 25367317ec3be5b5a8cb0a358e734fd4ed70f58f..6c877dd5e03b20e6389348ef7bae4d23900c0f0a 100644
--- a/kayak_render_macros/src/tags.rs
+++ b/kayak_render_macros/src/tags.rs
@@ -1,9 +1,9 @@
+use crate::get_core_crate;
 use crate::widget_attributes::WidgetAttributes;
 use proc_macro_error::abort;
 use quote::quote;
 use syn::parse::{Parse, ParseStream, Result};
 use syn::spanned::Spanned;
-use crate::get_core_crate;
 
 pub struct OpenTag {
     pub name: syn::Path,
diff --git a/kayak_render_macros/src/use_effect.rs b/kayak_render_macros/src/use_effect.rs
index 3856bbced3315d7ea7ac1b0dff9a0a929c0358c1..f09a151d25c228d933a04cc6ea229412e3bf4f24 100644
--- a/kayak_render_macros/src/use_effect.rs
+++ b/kayak_render_macros/src/use_effect.rs
@@ -1,10 +1,10 @@
+use crate::get_core_crate;
 use proc_macro::TokenStream;
 use proc_macro2::Ident;
 use quote::{format_ident, quote};
 use syn::parse::{Parse, ParseStream};
 use syn::punctuated::{Iter, Punctuated};
 use syn::{bracketed, Token};
-use crate::get_core_crate;
 
 pub(crate) struct UseEffect {
     pub closure: syn::ExprClosure,
diff --git a/kayak_render_macros/src/widget.rs b/kayak_render_macros/src/widget.rs
index 93cc8fb5d8abba77342a145b0e2d505bbf11b103..04b65d7984df93e36e1b3d6084aab24deedde35c 100644
--- a/kayak_render_macros/src/widget.rs
+++ b/kayak_render_macros/src/widget.rs
@@ -1,14 +1,14 @@
 use proc_macro2::TokenStream;
-use quote::{format_ident, quote};
 use quote::ToTokens;
+use quote::{format_ident, quote};
 use syn::parse::{Parse, ParseStream, Result};
 use syn::Path;
 
-use crate::widget_builder::build_widget_stream;
 use crate::children::Children;
 use crate::tags::ClosingTag;
-use crate::{get_core_crate, tags::OpenTag, widget_attributes::WidgetAttributes};
 use crate::widget_attributes::CustomWidgetAttributes;
+use crate::widget_builder::build_widget_stream;
+use crate::{get_core_crate, tags::OpenTag, widget_attributes::WidgetAttributes};
 
 #[derive(Clone)]
 pub struct Widget {
@@ -88,7 +88,6 @@ impl Widget {
         })
     }
 
-
     /// Constructs a widget and its props
     ///
     /// The returned tuple contains:
diff --git a/kayak_render_macros/src/widget_attributes.rs b/kayak_render_macros/src/widget_attributes.rs
index 45f85a676d9eb864abe260ca2c4dce4af54de45c..5b3f5f91a5b0dd64646d8005291dd604b942bcac 100644
--- a/kayak_render_macros/src/widget_attributes.rs
+++ b/kayak_render_macros/src/widget_attributes.rs
@@ -1,15 +1,15 @@
+use proc_macro2::{Ident, TokenStream};
 use proc_macro_error::emit_error;
 use quote::{quote, ToTokens};
 use std::collections::HashSet;
-use proc_macro2::{Ident, TokenStream};
 use syn::{
     ext::IdentExt,
     parse::{Parse, ParseStream, Result},
     spanned::Spanned,
 };
 
-use crate::{attribute::Attribute, children::Children, get_core_crate};
 use crate::child::Child;
+use crate::{attribute::Attribute, children::Children, get_core_crate};
 
 #[derive(Clone)]
 pub struct WidgetAttributes {
@@ -129,7 +129,6 @@ impl<'a, 'c> ToTokens for CustomWidgetAttributes<'a, 'c> {
 }
 
 impl<'a, 'c> CustomWidgetAttributes<'a, 'c> {
-
     /// Assign this widget's attributes to the given ident
     ///
     /// This takes the form: `IDENT.ATTR_NAME = ATTR_VALUE;`
@@ -183,11 +182,11 @@ impl<'a, 'c> CustomWidgetAttributes<'a, 'c> {
                     block.stmts.len() > 0
                 }
                 // Child is a widget
-                _ => true
+                _ => true,
             }
         } else {
             // Multiple children
             true
         }
     }
-}
\ No newline at end of file
+}
diff --git a/kayak_render_macros/src/widget_builder.rs b/kayak_render_macros/src/widget_builder.rs
index cc9928d390da82058754f72bd731134adba31777..ff2d105e527d069adbdc0bad793a16825d119cce 100644
--- a/kayak_render_macros/src/widget_builder.rs
+++ b/kayak_render_macros/src/widget_builder.rs
@@ -1,7 +1,6 @@
 use proc_macro2::TokenStream;
 use quote::quote;
 
-
 /// Creates a token stream for building a widget
 ///
 /// # Arguments
diff --git a/kayak_render_macros/src/widget_props.rs b/kayak_render_macros/src/widget_props.rs
index 7fc4084b401df9647f2548b6137f2249458c718c..7f64f6e653ab0e19e8c7643166bbe453870a3cfe 100644
--- a/kayak_render_macros/src/widget_props.rs
+++ b/kayak_render_macros/src/widget_props.rs
@@ -1,9 +1,9 @@
 use proc_macro::TokenStream;
 
-use proc_macro2::{Ident};
+use proc_macro2::Ident;
 use proc_macro_error::emit_error;
 use quote::quote;
-use syn::{Data, DeriveInput, Field, Meta, NestedMeta, parse_macro_input, spanned::Spanned};
+use syn::{parse_macro_input, spanned::Spanned, Data, DeriveInput, Field, Meta, NestedMeta};
 
 use crate::get_core_crate;
 
@@ -25,7 +25,10 @@ struct PropsHelpers {
 
 pub(crate) fn impl_widget_props(input: TokenStream) -> TokenStream {
     let DeriveInput {
-        ident, data, generics, ..
+        ident,
+        data,
+        generics,
+        ..
     } = parse_macro_input!(input);
 
     let helpers = process_data(data);
@@ -90,7 +93,9 @@ fn process_data(data: Data) -> PropsHelpers {
                 process_field(field, &mut helpers);
             }
         }
-        Data::Enum(data) => emit_error!(data.enum_token.span(), "Cannot derive WidgetProp for enum"),
+        Data::Enum(data) => {
+            emit_error!(data.enum_token.span(), "Cannot derive WidgetProp for enum")
+        }
     }
 
     helpers
@@ -121,7 +126,7 @@ fn process_field(field: Field, props: &mut PropsHelpers) {
                             PROP_STYLE => props.styles_ident = field.ident.clone(),
                             PROP_ON_EVENT => props.on_event_ident = field.ident.clone(),
                             PROP_FOCUSABLE => props.focusable_ident = field.ident.clone(),
-                            err => emit_error!(err.span(), "Invalid attribute: {}", err)
+                            err => emit_error!(err.span(), "Invalid attribute: {}", err),
                         }
                     }
                 }
@@ -140,4 +145,4 @@ fn quote_clone_field(field_ident: Option<Ident>) -> proc_macro2::TokenStream {
             None
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/lib.rs b/src/lib.rs
index df6fa1e561232c844d0fa1ba62ad5114bc112548..f72eb4905d0f0c26fd21e7b66004a228b7d81c9c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,6 +1,8 @@
 pub mod core {
     pub use kayak_core::*;
-    pub use kayak_render_macros::{constructor, render, rsx, use_effect, use_state, widget, WidgetProps};
+    pub use kayak_render_macros::{
+        constructor, render, rsx, use_effect, use_state, widget, WidgetProps,
+    };
 }
 
 #[cfg(feature = "bevy_renderer")]
diff --git a/src/widgets/app.rs b/src/widgets/app.rs
index a93b22091ae3f036d5ec61aa6b2531c8d68ad355..70d537907cddf5f5cd672dfbdbabd3e2da5a6042 100644
--- a/src/widgets/app.rs
+++ b/src/widgets/app.rs
@@ -1,9 +1,8 @@
-
 use crate::core::{
     render_command::RenderCommand,
-    OnEvent, rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp},
-    widget, Children,
+    widget, Children, OnEvent, WidgetProps,
 };
 
 use crate::widgets::Clip;
@@ -13,13 +12,10 @@ pub struct AppProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
diff --git a/src/widgets/background.rs b/src/widgets/background.rs
index b91db38d1d2509ed454abd2983f7962961104377..40a39e24935fa6b6d959876de306ae8ef5542e79 100644
--- a/src/widgets/background.rs
+++ b/src/widgets/background.rs
@@ -1,8 +1,8 @@
 use crate::core::{
     render_command::RenderCommand,
-    OnEvent, rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp},
-    widget, Children, Fragment,
+    widget, Children, Fragment, OnEvent, WidgetProps,
 };
 
 #[derive(WidgetProps, Default, Debug, PartialEq, Clone)]
@@ -10,13 +10,10 @@ pub struct BackgroundProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
diff --git a/src/widgets/button.rs b/src/widgets/button.rs
index 8f9abd1bf36f3e38fdd48eb09717d582c5eeb8aa..ed1f9f6f2b10c8ff65911d5020687ff8bfd4c2ab 100644
--- a/src/widgets/button.rs
+++ b/src/widgets/button.rs
@@ -1,8 +1,8 @@
 use crate::core::{
     render_command::RenderCommand,
-    Color, OnEvent, rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp, Units},
-    widget, Children, Fragment,
+    widget, Children, Color, Fragment, OnEvent, WidgetProps,
 };
 
 #[derive(WidgetProps, Default, Debug, PartialEq, Clone)]
@@ -10,13 +10,10 @@ pub struct ButtonProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
diff --git a/src/widgets/clip.rs b/src/widgets/clip.rs
index f70e4cd2050706481eebe01586b0de0700da1ed6..a55a4c1dd9a328ae3ea2830977961c3e74de9800 100644
--- a/src/widgets/clip.rs
+++ b/src/widgets/clip.rs
@@ -1,8 +1,8 @@
 use crate::core::{
     render_command::RenderCommand,
-    OnEvent, rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp, Units},
-    widget, Children,
+    widget, Children, OnEvent, WidgetProps,
 };
 
 #[derive(WidgetProps, Default, Debug, PartialEq, Clone)]
@@ -10,10 +10,8 @@ pub struct ClipProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
 }
 
diff --git a/src/widgets/element.rs b/src/widgets/element.rs
index e671e6bd2c63e08923ca3bb07570c790d287981b..901357e3d79be981d3c40f5d67cc4f910e959086 100644
--- a/src/widgets/element.rs
+++ b/src/widgets/element.rs
@@ -1,8 +1,8 @@
 use crate::core::{
     render_command::RenderCommand,
-    OnEvent, rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp},
-    widget, Children,
+    widget, Children, OnEvent, WidgetProps,
 };
 
 #[derive(WidgetProps, Default, Debug, PartialEq, Clone)]
@@ -10,13 +10,10 @@ pub struct ElementProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
diff --git a/src/widgets/fold.rs b/src/widgets/fold.rs
index a88f6762926bda7fc0e2cb5965f0e181ad2ff047..a7458e0a9a4efa03b747ea1a5bc9a54d803ab428 100644
--- a/src/widgets/fold.rs
+++ b/src/widgets/fold.rs
@@ -1,8 +1,8 @@
 use crate::core::{
     render_command::RenderCommand,
-    OnEvent, rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp, Units},
-    use_state, widget, Children, EventType, Handler,
+    use_state, widget, Children, EventType, Handler, OnEvent, WidgetProps,
 };
 
 use crate::widgets::{Background, Clip, If, Text};
@@ -16,13 +16,10 @@ pub struct FoldProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
@@ -58,7 +55,13 @@ pub struct FoldProps {
 /// ```
 #[widget]
 pub fn Fold(props: FoldProps) {
-    let FoldProps {default_open, label, on_change, open, ..} = props.clone();
+    let FoldProps {
+        default_open,
+        label,
+        on_change,
+        open,
+        ..
+    } = props.clone();
 
     // === State === //
     let initial = default_open || open.unwrap_or_default();
diff --git a/src/widgets/if_element.rs b/src/widgets/if_element.rs
index 807a22983a88185dd911724df18c4fc6946935e8..a981384d623f01cf97e5e51be26d6ac42fab6e28 100644
--- a/src/widgets/if_element.rs
+++ b/src/widgets/if_element.rs
@@ -1,8 +1,4 @@
-use crate::core::{
-    OnEvent, rsx, WidgetProps,
-    styles::{Style},
-    widget, Children,
-};
+use crate::core::{rsx, styles::Style, widget, Children, OnEvent, WidgetProps};
 
 #[derive(WidgetProps, Default, Debug, PartialEq, Clone)]
 pub struct IfProps {
@@ -10,13 +6,10 @@ pub struct IfProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
diff --git a/src/widgets/image.rs b/src/widgets/image.rs
index f73dc232acfbbfd44d41c6343c78c85dc8a75159..a1362cc7795be5e10b43e937cecd9469cf65ab0a 100644
--- a/src/widgets/image.rs
+++ b/src/widgets/image.rs
@@ -1,8 +1,8 @@
 use crate::core::{
     render_command::RenderCommand,
-    OnEvent, rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp},
-    widget, Children,
+    widget, Children, OnEvent, WidgetProps,
 };
 
 #[derive(WidgetProps, Default, Debug, PartialEq, Clone)]
@@ -11,20 +11,19 @@ pub struct ImageProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
 #[widget]
 pub fn Image(props: ImageProps) {
     props.styles = Some(Style {
-        render_command: StyleProp::Value(RenderCommand::Image { handle: props.handle }),
+        render_command: StyleProp::Value(RenderCommand::Image {
+            handle: props.handle,
+        }),
         ..props.styles.clone().unwrap_or_default()
     });
 
diff --git a/src/widgets/inspector.rs b/src/widgets/inspector.rs
index d77251ae1a2303f507e96ac6873e3516240c8d70..1e3559a7c472466b4e8593ea5e9ba7a228e14ff2 100644
--- a/src/widgets/inspector.rs
+++ b/src/widgets/inspector.rs
@@ -2,8 +2,7 @@ use kayak_core::styles::{PositionType, Style, StyleProp, Units};
 use kayak_core::{Bound, Color, EventType, OnEvent, VecTracker};
 use kayak_render_macros::{constructor, use_state};
 
-
-use crate::core::{rsx, widget, WidgetProps, MutableBound};
+use crate::core::{rsx, widget, MutableBound, WidgetProps};
 
 use crate::widgets::{Background, Button, Text};
 
diff --git a/src/widgets/nine_patch.rs b/src/widgets/nine_patch.rs
index 48627e0441c093064376ac8b5add5a36bd88fe54..21521847934e6c6319c5f4083fe81b19f853a6a2 100644
--- a/src/widgets/nine_patch.rs
+++ b/src/widgets/nine_patch.rs
@@ -1,9 +1,9 @@
 use crate::core::{
-    render_command::RenderCommand,
     layout_cache::Space,
-    OnEvent, rsx, WidgetProps,
+    render_command::RenderCommand,
+    rsx,
     styles::{Style, StyleProp},
-    widget, Children,
+    widget, Children, OnEvent, WidgetProps,
 };
 
 #[derive(WidgetProps, Default, Debug, PartialEq, Clone)]
@@ -13,20 +13,20 @@ pub struct NinePatchProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
 #[widget]
 pub fn NinePatch(props: NinePatchProps) {
     props.styles = Some(Style {
-        render_command: StyleProp::Value(RenderCommand::NinePatch { handle: props.handle, border: props.border }),
+        render_command: StyleProp::Value(RenderCommand::NinePatch {
+            handle: props.handle,
+            border: props.border,
+        }),
         ..props.styles.clone().unwrap_or_default()
     });
 
diff --git a/src/widgets/text.rs b/src/widgets/text.rs
index 5b6562d4ef05adf965b6ef655270910d65526f83..ef4793b87718ba09d7ccab4ed14161318e1f1a13 100644
--- a/src/widgets/text.rs
+++ b/src/widgets/text.rs
@@ -3,9 +3,8 @@ use kayak_font::{CoordinateSystem, KayakFont};
 
 use crate::core::{
     render_command::RenderCommand,
-    OnEvent, WidgetProps,
     styles::{Style, StyleProp},
-    widget,
+    widget, OnEvent, WidgetProps,
 };
 
 #[derive(WidgetProps, Default, Debug, PartialEq, Clone)]
@@ -17,16 +16,20 @@ pub struct TextProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
 #[widget]
 pub fn Text(props: TextProps) {
-    let TextProps{content, font, line_height, size, ..} = props.clone();
+    let TextProps {
+        content,
+        font,
+        line_height,
+        size,
+        ..
+    } = props.clone();
     let font_name = font;
     let font: Binding<Option<KayakFont>> =
         context.get_asset(font_name.clone().unwrap_or("Roboto".into()));
diff --git a/src/widgets/text_box.rs b/src/widgets/text_box.rs
index 360b7bf4334460e894fb74769d68247fe8af8ad1..ebd0784772de84b9c2b964c3ddbf9939bfc5f65e 100644
--- a/src/widgets/text_box.rs
+++ b/src/widgets/text_box.rs
@@ -1,8 +1,8 @@
 use crate::core::{
     render_command::RenderCommand,
-    Children, rsx, WidgetProps,
+    rsx,
     styles::{Style, StyleProp, Units},
-    widget, Bound, Color, EventType, MutableBound, OnEvent,
+    widget, Bound, Children, Color, EventType, MutableBound, OnEvent, WidgetProps,
 };
 use std::sync::{Arc, RwLock};
 
@@ -16,13 +16,10 @@ pub struct TextBoxProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
@@ -57,7 +54,12 @@ pub struct Focus(pub bool);
 
 #[widget(focusable)]
 pub fn TextBox(props: TextBoxProps) {
-    let TextBoxProps {on_change, placeholder, value, ..} = props.clone();
+    let TextBoxProps {
+        on_change,
+        placeholder,
+        value,
+        ..
+    } = props.clone();
     let current_styles = props.styles.clone().unwrap_or_default();
     props.styles = Some(Style {
         render_command: StyleProp::Value(RenderCommand::Layout),
diff --git a/src/widgets/tooltip.rs b/src/widgets/tooltip.rs
index e80dc93390c165a8390e152cd40212f27f314a3c..d5974eabee0428a78c76d8c7a17264a29022b250 100644
--- a/src/widgets/tooltip.rs
+++ b/src/widgets/tooltip.rs
@@ -1,8 +1,8 @@
 use crate::core::{
     render_command::RenderCommand,
-    rsx, WidgetProps,
+    rsx,
     styles::{PositionType, Style, StyleProp, Units},
-    widget, Bound, Children, Color, EventType, MutableBound, OnEvent,
+    widget, Bound, Children, Color, EventType, MutableBound, OnEvent, WidgetProps,
 };
 use std::sync::Arc;
 
@@ -27,10 +27,8 @@ pub struct TooltipProviderProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
 }
 
@@ -42,10 +40,8 @@ pub struct TooltipConsumerProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
 }
 
@@ -88,7 +84,7 @@ pub struct TooltipConsumerProps {
 /// ```
 #[widget]
 pub fn TooltipProvider(props: TooltipProviderProps) {
-    let TooltipProviderProps{position, size, ..} = props;
+    let TooltipProviderProps { position, size, .. } = props;
     const WIDTH: f32 = 150.0;
     const HEIGHT: f32 = 18.0;
     const PADDING: (f32, f32) = (10.0, 5.0);
@@ -197,7 +193,9 @@ pub fn TooltipProvider(props: TooltipProviderProps) {
 /// ```
 #[widget]
 pub fn TooltipConsumer(props: TooltipConsumerProps) {
-    let TooltipConsumerProps {anchor, size, text, ..} = props.clone();
+    let TooltipConsumerProps {
+        anchor, size, text, ..
+    } = props.clone();
     props.styles = Some(Style {
         render_command: StyleProp::Value(RenderCommand::Clip),
         width: StyleProp::Value(Units::Auto),
diff --git a/src/widgets/window.rs b/src/widgets/window.rs
index 08b3beca41c371fb026f833759e421882ec32e93..4140d2ac37fadaecf0320d4e2d9f5939360e97a9 100644
--- a/src/widgets/window.rs
+++ b/src/widgets/window.rs
@@ -1,9 +1,9 @@
 use crate::core::{
     color::Color,
     render_command::RenderCommand,
-    rsx, WidgetProps,
+    rsx,
     styles::{PositionType, Style, StyleProp, Units},
-    use_state, widget, Children, EventType, OnEvent,
+    use_state, widget, Children, EventType, OnEvent, WidgetProps,
 };
 
 use crate::widgets::{Background, Clip, Element, Text};
@@ -17,19 +17,22 @@ pub struct WindowProps {
     #[prop_field(Styles)]
     pub styles: Option<Style>,
     #[prop_field(Children)]
-
     pub children: Option<Children>,
     #[prop_field(OnEvent)]
-
     pub on_event: Option<OnEvent>,
     #[prop_field(Focusable)]
-
     pub focusable: Option<bool>,
 }
 
 #[widget]
 pub fn Window(props: WindowProps) {
-    let WindowProps{draggable, position, size, title, ..} = props.clone();
+    let WindowProps {
+        draggable,
+        position,
+        size,
+        title,
+        ..
+    } = props.clone();
 
     let (is_dragging, set_is_dragging, ..) = use_state!(false);
     let (offset, set_offset, ..) = use_state!((0.0, 0.0));