diff --git a/editor source/Desktop/CommonControls/DBTreeView.cs b/editor source/Desktop/CommonControls/DBTreeView.cs
index d51cfb8dfb63f9ac38134ffcfed2653cee1a8d73..aa637e7ff874cdd1e6182e05680c8c9ae2a9ed4a 100644
--- a/editor source/Desktop/CommonControls/DBTreeView.cs	
+++ b/editor source/Desktop/CommonControls/DBTreeView.cs	
@@ -9,7 +9,7 @@ namespace Desktop.CommonControls
 	{
 		protected override void OnHandleCreated(EventArgs e)
 		{
-			SendMessage(this.Handle, TVM_SETEXTENDEDSTYLE, (IntPtr)TVS_EX_DOUBLEBUFFER, (IntPtr)TVS_EX_DOUBLEBUFFER);
+			NativeMethods.SendMessage(this.Handle, TVM_SETEXTENDEDSTYLE, (IntPtr)TVS_EX_DOUBLEBUFFER, (IntPtr)TVS_EX_DOUBLEBUFFER);
 			base.OnHandleCreated(e);
 		}
 
@@ -17,7 +17,5 @@ namespace Desktop.CommonControls
 		private const int TVM_SETEXTENDEDSTYLE = 0x1100 + 44;
 		private const int TVM_GETEXTENDEDSTYLE = 0x1100 + 45;
 		private const int TVS_EX_DOUBLEBUFFER = 0x0004;
-		[DllImport("user32.dll")]
-		private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
 	}
 }
diff --git a/editor source/SPNATI Character Editor/Activities/DialogueEditor.cs b/editor source/SPNATI Character Editor/Activities/DialogueEditor.cs
index 9e329b55cb16d767fee9b1520d2cb7300ab09828..99b6cd4edca868c2d844a9d376eb6fbd7dfab303 100644
--- a/editor source/SPNATI Character Editor/Activities/DialogueEditor.cs	
+++ b/editor source/SPNATI Character Editor/Activities/DialogueEditor.cs	
@@ -549,80 +549,6 @@ namespace SPNATI_Character_Editor.Activities
 			return selectedStages;
 		}
 
-		/// <summary>
-		/// Updates a stage-specific dropdown to have display friendly options specific to the character being targeted
-		/// </summary>
-		/// <param name="box"></param>
-		/// <param name="character"></param>
-		/// <param name="useLookForward">If true, for removed/removing cases, only valid stages will be provided</param>
-		private void PopulateStageCombo(ComboBox box, Character character, bool filterStages)
-		{
-			string oldText = box.Text;
-			box.Items.Clear();
-			box.Text = "";
-
-			string tag = _selectedCase?.Tag;
-			string filterType = null;
-			bool removing = false;
-			bool removed = false;
-			bool lookForward = false;
-			if (tag != null && filterStages)
-			{
-				removing = tag.Contains("removing_");
-				removed = tag.Contains("removed_");
-				lookForward = removing;
-				if (removing || removed)
-				{
-					int index = tag.LastIndexOf('_');
-					if (index >= 0 && index < tag.Length - 1)
-					{
-						filterType = tag.Substring(index + 1);
-						if (filterType == "accessory")
-							filterType = "extra";
-					}
-				}
-			}
-
-			if (character == null)
-			{
-				//If the character is not valid, still allow something but there's no way to give a useful name to it
-				for (int i = 0; i < 8 + Clothing.ExtraStages; i++)
-				{
-					box.Items.Add(i);
-				}
-			}
-			else
-			{
-				for (int i = 0; i < character.Layers + Clothing.ExtraStages; i++)
-				{
-					if (filterStages)
-					{
-						if (filterType != null)
-						{
-							//Filter out stages that will never be valid
-							if (i >= 0 && i <= character.Layers)
-							{
-								int layer = removed ? i - 1 : i;
-								if (layer < 0 || layer >= character.Layers)
-									continue;
-
-								Clothing clothing = character.Wardrobe[character.Layers - layer - 1];
-								string realType = clothing.Type;
-								if (filterType != realType.ToLower())
-									continue;
-							}
-							else continue;
-						}
-					}
-					box.Items.Add(character.LayerToStageName(i, lookForward));
-				}
-				if (!string.IsNullOrEmpty(oldText))
-				{
-					box.Text = oldText;
-				}
-			}
-		}
-
 		/// <summary>
 		/// Sets the checked state for each stage for the current case
 		/// </summary>
@@ -652,43 +578,6 @@ namespace SPNATI_Character_Editor.Activities
 			}
 		}
 
-		/// <summary>
-		/// Sets a stage target box to the given stage
-		/// </summary>
-		/// <param name="box"></param>
-		/// <param name="stage"></param>
-		private void SetStageComboBox(ComboBox box, string stage)
-		{
-			for (int i = 0; i < box.Items.Count; i++)
-			{
-				StageName stageName = box.Items[i] as StageName;
-				if (stageName != null && stageName.Id == stage)
-				{
-					box.SelectedIndex = i;
-					return;
-				}
-			}
-
-			box.Text = stage; //If couldn't set an object, just set the text
-		}
-
-		/// <summary>
-		/// Reads the value from a stage dropdown
-		/// </summary>
-		/// <param name="box"></param>
-		/// <returns></returns>
-		private string ReadStageComboBox(ComboBox box)
-		{
-			StageName stage = box.SelectedItem as StageName;
-			if (stage == null)
-			{
-				//Must be a generic stage
-				return box.Text;
-			}
-
-			return stage.Id;
-		}
-
 		private bool FilterTargets(PropertyRecord record)
 		{
 			if (record.Group == "Target")
@@ -717,7 +606,6 @@ namespace SPNATI_Character_Editor.Activities
 				if (newTag != c.Tag)
 					needRegeneration = true;
 				c.Tag = newTag;
-				Trigger trigger = TriggerDatabase.GetTrigger(newTag);
 
 				//Figure out the stages
 				List<int> oldStages = new List<int>();
diff --git a/editor source/SPNATI Character Editor/Activities/PoseCreator.cs b/editor source/SPNATI Character Editor/Activities/PoseCreator.cs
index bbb2fde890b78c5471b19fe10bfc22585624d227..e2a4e8bcfb18261c953608aed7b02e8aafe01503 100644
--- a/editor source/SPNATI Character Editor/Activities/PoseCreator.cs	
+++ b/editor source/SPNATI Character Editor/Activities/PoseCreator.cs	
@@ -20,7 +20,6 @@ namespace SPNATI_Character_Editor.Activities
 		public const int SelectionLeeway = EpilogueCanvas.SelectionLeeway;
 		public const int RotationLeeway = EpilogueCanvas.RotationLeeway;
 
-		private CharacterEditorData _editorData;
 		private ISkin _character;
 		private ImageLibrary _library;
 
@@ -41,11 +40,8 @@ namespace SPNATI_Character_Editor.Activities
 
 		private Point _lastMouse;
 		private Point _canvasOffset = new Point(0, 0);
-		private Point _dragOffset = new Point(0, 0);
 		private Point _downPoint = new Point(0, 0);
 		private Point _startDragPosition = new Point(0, 0);
-		private Point _startDragPoint = new Point(0, 0);
-		private HoverContext _dragContext;
 		private HoverContext _moveContext;
 		private EditMode _mode = EditMode.Edit;
 		private CanvasState _state = CanvasState.Normal;
@@ -53,7 +49,6 @@ namespace SPNATI_Character_Editor.Activities
 		private Pen _penInnerSelection;
 		private Pen _penBoundary;
 		private Pen _penKeyframe;
-		private Pen _penKeyframeSegment;
 		private Pen _penKeyframeConnection;
 
 		public PoseCreator()
@@ -72,7 +67,6 @@ namespace SPNATI_Character_Editor.Activities
 			_penKeyframe.Width = 2;
 			_penKeyframeConnection = new Pen(Color.FromArgb(127, 255, 255, 255), 8);
 			_penKeyframeConnection.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
-			_penKeyframeSegment = new Pen(Color.FromArgb(127, 255, 255, 255), 8);
 		}
 
 		public override string Caption
@@ -84,7 +78,6 @@ namespace SPNATI_Character_Editor.Activities
 		{
 			_character = Record as ISkin;
 			_library = ImageLibrary.Get(_character);
-			_editorData = CharacterDatabase.GetEditorData(_character.Character);
 		}
 
 		protected override void OnFirstActivate()
@@ -509,7 +502,6 @@ namespace SPNATI_Character_Editor.Activities
 			Sprite pastedSprite = obj as Sprite;
 			PoseDirective pastedDirective = obj as PoseDirective;
 			Keyframe pastedKeyframe = obj as Keyframe;
-			PoseAnimFrame pastedAnim = obj as PoseAnimFrame;
 
 			TreeNode pastedNode = null;
 			if (pastedPose != null)
@@ -734,7 +726,6 @@ namespace SPNATI_Character_Editor.Activities
 			}
 			else
 			{
-				Pose pose = targetNode.Tag as Pose;
 				e.Effect = DragDropEffects.Move;
 			}
 
@@ -1231,14 +1222,10 @@ namespace SPNATI_Character_Editor.Activities
 								//start dragging
 								if (HoverContext.Object.HasFlag(context))
 								{
-									RectangleF objRect = _selectedObject.ToScreenRegion(canvas.Width, canvas.Height, _canvasOffset);
-									_dragOffset = new Point(screenPt.X - (int)objRect.X, screenPt.Y - (int)objRect.Y);
-
 									switch (context)
 									{
 										case HoverContext.Drag:
 											_startDragPosition = new Point((int)_selectedObject.X, (int)_selectedObject.Y);
-											_startDragPoint = new Point((int)objRect.X, (int)objRect.Y);
 											_state = CanvasState.MovingObject;
 											break;
 										case HoverContext.ScaleTopLeft:
@@ -1276,17 +1263,9 @@ namespace SPNATI_Character_Editor.Activities
 													context |= HoverContext.ScaleTop;
 												}
 											}
-											_dragContext = context;
 											_moveContext = context;
 											_state = CanvasState.Scaling;
 											break;
-										case HoverContext.SizeLeft:
-										case HoverContext.SizeTop:
-										case HoverContext.SizeRight:
-										case HoverContext.SizeBottom:
-											_dragContext = context;
-											_state = CanvasState.Resizing;
-											break;
 										case HoverContext.Rotate:
 											_state = CanvasState.Rotating;
 											break;
@@ -1302,10 +1281,6 @@ namespace SPNATI_Character_Editor.Activities
 							int offsetX = screenPt.X - _downPoint.X;
 							int offsetY = screenPt.Y - _downPoint.Y;
 
-							//get the new screen position using that offset
-							int screenX = _startDragPoint.X + offsetX;
-							int screenY = _startDragPoint.Y + offsetY;
-
 							Rectangle rect = _selectedObject.ToScreenRegion(canvas.Width, canvas.Height, _canvasOffset);
 
 							//convert this to world space
@@ -1443,7 +1418,6 @@ namespace SPNATI_Character_Editor.Activities
 		{
 			if (data is PoseDirective)
 			{
-				PoseDirective directive = data as PoseDirective;
 				HashSet<string> items = new HashSet<string>();
 				foreach (Sprite sprite in Pose.Sprites)
 				{
diff --git a/editor source/SPNATI Character Editor/Activities/TemplateEditor.cs b/editor source/SPNATI Character Editor/Activities/TemplateEditor.cs
index e6e201816594f4750cbc72dd58e8586aa6398e41..468801b38f966749243d33489bbbcf27ea6434d4 100644
--- a/editor source/SPNATI Character Editor/Activities/TemplateEditor.cs	
+++ b/editor source/SPNATI Character Editor/Activities/TemplateEditor.cs	
@@ -16,7 +16,6 @@ namespace SPNATI_Character_Editor.Activities
 		private ImageLibrary _imageLibrary;
 		private ISkin _character;
 		private string _lastTemplateFile;
-		private PoseTemplate _lastTemplate;
 
 		public TemplateEditor()
 		{
@@ -113,7 +112,6 @@ namespace SPNATI_Character_Editor.Activities
 		/// <param name="template"></param>
 		private void LoadTemplate(PoseTemplate template)
 		{
-			_lastTemplate = template;
 			txtBaseCode.Text = template.BaseCode.Serialize();
 			gridLayers.Rows.Clear();
 			gridEmotions.Rows.Clear();
diff --git a/editor source/SPNATI Character Editor/Activities/WritingAid.cs b/editor source/SPNATI Character Editor/Activities/WritingAid.cs
index b202ee0623f3d0cfd790d9f17ee3aab24c62b24d..0f8253631721c987238beb040284436f4262dca1 100644
--- a/editor source/SPNATI Character Editor/Activities/WritingAid.cs	
+++ b/editor source/SPNATI Character Editor/Activities/WritingAid.cs	
@@ -343,8 +343,6 @@ namespace SPNATI_Character_Editor.Activities
 				{
 					return;
 				}
-				Situation s = tuple.Item2;
-
 				Image img = Properties.Resources.GoToLine;
 				e.Paint(e.CellBounds, DataGridViewPaintParts.All);
 				var w = img.Width;
diff --git a/editor source/SPNATI Character Editor/CharacterValidator.cs b/editor source/SPNATI Character Editor/CharacterValidator.cs
index 7b63b01130835823176895175b14d87f81029646..e1f12045fd90d1b517a75f8b0dc2caaac3d7880f 100644
--- a/editor source/SPNATI Character Editor/CharacterValidator.cs	
+++ b/editor source/SPNATI Character Editor/CharacterValidator.cs	
@@ -437,7 +437,7 @@ namespace SPNATI_Character_Editor
 
 			foreach (Pose pose in character.Poses)
 			{
-				ValidatePose(character, pose, warnings, unusedImages);
+				ValidatePose(character, pose, unusedImages);
 			}
 
 			if (unusedImages.Count > 0)
@@ -708,7 +708,7 @@ namespace SPNATI_Character_Editor
 		/// <param name="pose"></param>
 		/// <param name="warnings"></param>
 		/// <param name="baseImages"></param>
-		private static void ValidatePose(Character character, Pose pose, List<ValidationError> warnings, HashSet<string> unusedImages)
+		private static void ValidatePose(Character character, Pose pose, HashSet<string> unusedImages)
 		{
 			unusedImages.Remove("custom:" + pose.Id);
 			foreach (Sprite sprite in pose.Sprites)
@@ -733,11 +733,6 @@ namespace SPNATI_Character_Editor
 						}
 					}
 				}
-
-				foreach (PoseAnimFrame af in directive.AnimFrames)
-				{
-					
-				}
 			}
 		}
 
@@ -790,7 +785,6 @@ namespace SPNATI_Character_Editor
 			}
 
 			//go through each stage using the alt skin and make sure the images are all present
-			List<int> skinnedStages = new List<int>();
 			Dictionary<int, bool> stageUsingSkin = new Dictionary<int, bool>();
 			foreach (StageSpecificValue stageInfo in skin.Folders)
 			{
diff --git a/editor source/SPNATI Character Editor/Controls/DialogueGrid.cs b/editor source/SPNATI Character Editor/Controls/DialogueGrid.cs
index 677a10ff6a1b64d17651c7264db75ce8a9c8be78..3f62b3bf7e126d3e53ff390cc97a4e927f22e827 100644
--- a/editor source/SPNATI Character Editor/Controls/DialogueGrid.cs	
+++ b/editor source/SPNATI Character Editor/Controls/DialogueGrid.cs	
@@ -513,8 +513,6 @@ namespace SPNATI_Character_Editor.Controls
 					stage = _selectedStage.Id;
 				imageKey = DialogueLine.GetStageImage(stage, imageKey);
 			}
-			CharacterImage image = _imageLibrary.Find(imageKey);
-
 			DataGridViewRow row = gridDialogue.Rows[gridDialogue.Rows.Add()];
 			row.Tag = line;
 			DataGridViewComboBoxCell imageCell = row.Cells["ColImage"] as DataGridViewComboBoxCell;
diff --git a/editor source/SPNATI Character Editor/Controls/EditControls/ExpressionControl.cs b/editor source/SPNATI Character Editor/Controls/EditControls/ExpressionControl.cs
index af86e2752e57273860c4736595eabc3dc39a6e7e..0c600eabbd0647e2ddd6d63ac045e489121e85b8 100644
--- a/editor source/SPNATI Character Editor/Controls/EditControls/ExpressionControl.cs	
+++ b/editor source/SPNATI Character Editor/Controls/EditControls/ExpressionControl.cs	
@@ -77,8 +77,6 @@ namespace SPNATI_Character_Editor
 			}
 			_currentVariable = variable;
 
-			AutoCompleteStringCollection list = new AutoCompleteStringCollection();
-
 			cboValue.Items.Clear();
 			switch (_currentVariable)
 			{
diff --git a/editor source/SPNATI Character Editor/Controls/EditControls/ImageFileSelectControl.cs b/editor source/SPNATI Character Editor/Controls/EditControls/ImageFileSelectControl.cs
index 1fbc9cbb5f6de08ce72d6759629ad9e73d942da3..943511a44caf66a3b8c472a6b49a35191ad4b746 100644
--- a/editor source/SPNATI Character Editor/Controls/EditControls/ImageFileSelectControl.cs	
+++ b/editor source/SPNATI Character Editor/Controls/EditControls/ImageFileSelectControl.cs	
@@ -17,7 +17,6 @@ namespace SPNATI_Character_Editor.Controls
 
 		protected override void OnSetParameters(EditControlAttribute parameters)
 		{
-			FileSelectAttribute p = parameters as FileSelectAttribute;
 			openFileDialog1.Filter = "Image files|*.bmp;*.jpg;*.jpeg;*.png;*.gif|All files|*.*";
 		}
 
diff --git a/editor source/SPNATI Character Editor/Controls/SceneTree.cs b/editor source/SPNATI Character Editor/Controls/SceneTree.cs
index 816b4e242d25279134776fac7d3523706d4d9789..18346fdad9ffbe52d9afd1114e664ca38b908746 100644
--- a/editor source/SPNATI Character Editor/Controls/SceneTree.cs	
+++ b/editor source/SPNATI Character Editor/Controls/SceneTree.cs	
@@ -544,23 +544,6 @@ namespace SPNATI_Character_Editor.Controls
 			return null;
 		}
 
-		/// <summary>
-		/// Finds the tree node associated with a scene
-		/// </summary>
-		/// <param name="scene"></param>
-		/// <returns></returns>
-		private TreeNode FindNode(Scene scene)
-		{
-			foreach (TreeNode node in treeScenes.Nodes)
-			{
-				if (node.Tag == scene)
-				{
-					return node;
-				}
-			}
-			return null;
-		}
-
 		private void AddScene()
 		{
 			Scene scene = GetSelectedScene();
@@ -886,7 +869,6 @@ namespace SPNATI_Character_Editor.Controls
 			Directive pastedDirective = obj as Directive;
 			Keyframe pastedFrame = obj as Keyframe;
 
-			Scene selectedScene = node.Tag as Scene;
 			Directive selectedDirective = node.Tag as Directive;
 			Keyframe selectedFrame = node.Tag as Keyframe;
 
@@ -896,14 +878,12 @@ namespace SPNATI_Character_Editor.Controls
 
 			if (selectedDirective != null)
 			{
-				selectedScene = node.Parent.Tag as Scene;
 				sceneNode = node.Parent;
 				dirNode = node;
 			}
 			else if (selectedFrame != null)
 			{
 				selectedDirective = node.Parent.Tag as Directive;
-				selectedScene = node.Parent.Parent.Tag as Scene;
 				sceneNode = node.Parent.Parent;
 				dirNode = node.Parent;
 				frameNode = node;
diff --git a/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.Designer.cs b/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.Designer.cs
index b49b0f383edbc7c22dddd2465d38c8596b01e8f9..a33f7174e19e07d81bae3121e6242c06ab1c6ed9 100644
--- a/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.Designer.cs	
+++ b/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.Designer.cs	
@@ -43,11 +43,10 @@
 			this.cmdPlay = new System.Windows.Forms.ToolStripButton();
 			this.canvas = new Desktop.CommonControls.SelectablePanel();
 			this.label1 = new System.Windows.Forms.Label();
-			this.lblCoord = new System.Windows.Forms.Label();
-			this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
-			this.tmrPlay = new System.Windows.Forms.Timer(this.components);
 			this.lblZoom = new System.Windows.Forms.Label();
 			this.sliderZoom = new System.Windows.Forms.TrackBar();
+			this.lblCoord = new System.Windows.Forms.Label();
+			this.tmrPlay = new System.Windows.Forms.Timer(this.components);
 			((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
 			this.splitContainer1.Panel1.SuspendLayout();
 			this.splitContainer1.Panel2.SuspendLayout();
@@ -242,22 +241,6 @@
 			this.label1.TabIndex = 11;
 			this.label1.Text = "Zoom:";
 			// 
-			// lblCoord
-			// 
-			this.lblCoord.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-			this.lblCoord.Location = new System.Drawing.Point(923, 7);
-			this.lblCoord.Name = "lblCoord";
-			this.lblCoord.RightToLeft = System.Windows.Forms.RightToLeft.No;
-			this.lblCoord.Size = new System.Drawing.Size(175, 13);
-			this.lblCoord.TabIndex = 10;
-			this.lblCoord.Text = "(0,0)";
-			this.lblCoord.TextAlign = System.Drawing.ContentAlignment.TopRight;
-			// 
-			// tmrPlay
-			// 
-			this.tmrPlay.Interval = 32;
-			this.tmrPlay.Tick += new System.EventHandler(this.tmrPlay_Tick);
-			// 
 			// lblZoom
 			// 
 			this.lblZoom.AutoSize = true;
@@ -279,6 +262,22 @@
 			this.sliderZoom.Value = 3;
 			this.sliderZoom.ValueChanged += new System.EventHandler(this.SliderZoom_ValueChanged);
 			// 
+			// lblCoord
+			// 
+			this.lblCoord.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+			this.lblCoord.Location = new System.Drawing.Point(923, 7);
+			this.lblCoord.Name = "lblCoord";
+			this.lblCoord.RightToLeft = System.Windows.Forms.RightToLeft.No;
+			this.lblCoord.Size = new System.Drawing.Size(175, 13);
+			this.lblCoord.TabIndex = 10;
+			this.lblCoord.Text = "(0,0)";
+			this.lblCoord.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// tmrPlay
+			// 
+			this.tmrPlay.Interval = 32;
+			this.tmrPlay.Tick += new System.EventHandler(this.tmrPlay_Tick);
+			// 
 			// EpilogueCanvas
 			// 
 			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -312,7 +311,6 @@
 		private System.Windows.Forms.Label label1;
 		private System.Windows.Forms.Label lblCoord;
 		private Desktop.CommonControls.PropertyTable propertyTable;
-		private System.Windows.Forms.ToolTip toolTip1;
 		private SceneTree treeScenes;
 		private System.Windows.Forms.ToolStrip canvasStrip;
 		private System.Windows.Forms.ToolStripButton cmdFit;
diff --git a/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.cs b/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.cs
index 13c32faa0ade9c1d0429b47ce42243342a45caca..790d81b5daac06af48496c9658f84479645bf460 100644
--- a/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.cs	
+++ b/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.cs	
@@ -128,14 +128,6 @@ namespace SPNATI_Character_Editor.Controls
 			treeScenes.SelectNode(scene, directive, keyframe);
 		}
 
-		/// <summary>
-		/// Resizes the canvas to equal zoom * viewport size
-		/// </summary>
-		private void ResizeCanvas()
-		{
-			canvas.Invalidate();
-		}
-
 		private void Canvas_Paint(object sender, PaintEventArgs e)
 		{
 			if (_sceneTransition != null)
@@ -147,8 +139,8 @@ namespace SPNATI_Character_Editor.Controls
 			if (_scenePreview == null) { return; }
 			Graphics g = e.Graphics;
 
-			Point viewportTopLeft = ToScreenPoint(new Point(0, 0));
-			Point viewportBottomRight = ToScreenPoint(new PointF(_scenePreview.Width, _scenePreview.Height));
+			//Point viewportTopLeft = ToScreenPoint(new Point(0, 0));
+			//Point viewportBottomRight = ToScreenPoint(new PointF(_scenePreview.Width, _scenePreview.Height));
 
 			//_font = new Font("Trebuchet MS", 14 * ZoomLevel / _scenePreview.Scale); //use this to scale font with viewport
 			//_font = new Font("Trebuchet MS", 14 * ZoomLevel); //use this to scale with zoom but constant relative to viewport
@@ -546,21 +538,6 @@ namespace SPNATI_Character_Editor.Controls
 			return new PointF(px, py);
 		}
 
-		private void PanelCanvas_Resize(object sender, EventArgs e)
-		{
-		}
-
-		/// <summary>
-		/// Converts a point from world space to screen space
-		/// </summary>
-		/// <param name="pt"></param>
-		/// <returns></returns>
-		private Point ToScreenPoint(Point pt)
-		{
-			int x = (int)((pt.X + _canvasOffset.X) * ZoomLevel);
-			int y = (int)((pt.Y + _canvasOffset.Y) * ZoomLevel);
-			return new Point(x, y);
-		}
 		private Point ToScreenPoint(PointF pt)
 		{
 			int x = (int)((pt.X + _canvasOffset.X) * ZoomLevel);
@@ -1383,7 +1360,7 @@ namespace SPNATI_Character_Editor.Controls
 							}
 							break;
 						case CanvasState.Rotating:
-							if (_selectedObject.AdjustRotation(worldPt, _scenePreview))
+							if (_selectedObject.AdjustRotation(worldPt))
 							{
 								treeScenes.UpdateNode(_selectedObject.LinkedFrame);
 								if (_selectedObject.LinkedFrame == propertyTable.Data)
@@ -1463,7 +1440,6 @@ namespace SPNATI_Character_Editor.Controls
 		private void SliderZoom_ValueChanged(object sender, EventArgs e)
 		{
 			float zoom = sliderZoom.Value;
-			int min = sliderZoom.Minimum;
 			int max = sliderZoom.Maximum;
 
 			float amount = zoom / max;
@@ -2036,10 +2012,10 @@ namespace SPNATI_Character_Editor.Controls
 
 		private void cmdLock_Click(object sender, EventArgs e)
 		{
-			LockViewport(cmdLock.Checked);
+			LockViewport();
 		}
 
-		private void LockViewport(bool locked)
+		private void LockViewport()
 		{
 			_viewportLocked = cmdLock.Checked;
 			sliderZoom.Enabled = !_viewportLocked;
@@ -2118,18 +2094,15 @@ namespace SPNATI_Character_Editor.Controls
 			float aspectRatio = _scenePreview.AspectRatio;
 			float viewWidth = aspectRatio * windowHeight;
 
-			int viewportWidth = 0;
 			int viewportHeight = 0;
 			if (viewWidth > windowWidth)
 			{
 				//take full width of window
-				viewportWidth = windowWidth;
 				viewportHeight = (int)(windowWidth / aspectRatio);
 			}
 			else
 			{
 				//take full height of window
-				viewportWidth = (int)viewWidth;
 				viewportHeight = windowHeight;
 			}
 
@@ -2294,7 +2267,7 @@ namespace SPNATI_Character_Editor.Controls
 			cmdLock.Enabled = !enabled;
 			cmdPlayDirective.Enabled = !enabled;
 			cmdFit.Enabled = !enabled;
-			LockViewport(cmdLock.Checked);
+			LockViewport();
 			canvas.Cursor = Cursors.Default;
 			BuildScene(enabled);
 			if (enabled)
diff --git a/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.resx b/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.resx
index 9acae8a859b0bb1fc5bb23d93523769f9f331f06..000439aff49d87f22a600e3ea7af1f60033ee70d 100644
--- a/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.resx	
+++ b/editor source/SPNATI Character Editor/EpilogueEditing/EpilogueCanvas.resx	
@@ -120,9 +120,6 @@
   <metadata name="canvasStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
-  <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>130, 17</value>
-  </metadata>
   <metadata name="tmrPlay.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>227, 17</value>
   </metadata>
diff --git a/editor source/SPNATI Character Editor/EpilogueEditing/PoseAnimation.cs b/editor source/SPNATI Character Editor/EpilogueEditing/PoseAnimation.cs
index e657729ae846681eeea51ffb551d3734c4a40a4d..1b57d6b74d1c653ec6d121f5264ac800c4544dff 100644
--- a/editor source/SPNATI Character Editor/EpilogueEditing/PoseAnimation.cs	
+++ b/editor source/SPNATI Character Editor/EpilogueEditing/PoseAnimation.cs	
@@ -22,7 +22,7 @@ namespace SPNATI_Character_Editor.EpilogueEditing
 			Directive = directive;
 			foreach (Keyframe kf in directive.Keyframes)
 			{
-				KeyframePreview frame = new KeyframePreview(pose, kf);
+				KeyframePreview frame = new KeyframePreview(kf);
 				Frames.Add(frame);
 			}
 			Frames.Sort((f1, f2) => {
@@ -147,7 +147,7 @@ namespace SPNATI_Character_Editor.EpilogueEditing
 		public float Rotation = 0;
 		public string Src;
 
-		public KeyframePreview(PosePreview pose, Keyframe frame)
+		public KeyframePreview(Keyframe frame)
 		{
 			Keyframe = frame;
 			Src = frame.Src;
diff --git a/editor source/SPNATI Character Editor/EpilogueEditing/PosePreview.cs b/editor source/SPNATI Character Editor/EpilogueEditing/PosePreview.cs
index 4404de2b18f5621b920fa7b25c6c2915e10f7253..86c49a3453de08fcc0509c1065008ecddc8d7c14 100644
--- a/editor source/SPNATI Character Editor/EpilogueEditing/PosePreview.cs	
+++ b/editor source/SPNATI Character Editor/EpilogueEditing/PosePreview.cs	
@@ -122,18 +122,13 @@ namespace SPNATI_Character_Editor.EpilogueEditing
 			return _spriteMap.Get(id);
 		}
 
-		internal bool IsDisposing;
 		public void Dispose()
 		{
-			IsDisposing = true;
-
 			foreach (Image img in Images.Values)
 			{
 				img.Dispose();
 			}
 			Images.Clear();
-
-			IsDisposing = false;
 		}
 
 		private void AddImage(string src)
diff --git a/editor source/SPNATI Character Editor/EpilogueEditing/SceneAnimation.cs b/editor source/SPNATI Character Editor/EpilogueEditing/SceneAnimation.cs
index 4e8c9a72679f0dbc16d6407ed0b011758765cd39..d6a6206394171dc4ee0a1987dd064e339ceef4a6 100644
--- a/editor source/SPNATI Character Editor/EpilogueEditing/SceneAnimation.cs	
+++ b/editor source/SPNATI Character Editor/EpilogueEditing/SceneAnimation.cs	
@@ -55,7 +55,7 @@ namespace SPNATI_Character_Editor.EpilogueEditing
 			Directive = directive;
 			Scene = scene;
 
-			Build(true);
+			Build();
 		}
 
 		public bool IsComplete
@@ -73,10 +73,10 @@ namespace SPNATI_Character_Editor.EpilogueEditing
 
 		public void Rebuild()
 		{
-			Build(false);
+			Build();
 		}
 
-		private void Build(bool firstTime)
+		private void Build()
 		{
 			Frames.Clear();
 			//current object values serve as the first keyframe
diff --git a/editor source/SPNATI Character Editor/EpilogueEditing/SceneObject.cs b/editor source/SPNATI Character Editor/EpilogueEditing/SceneObject.cs
index 243ba1850aeb6e8c09ef4a118b14d78756e1c9e4..9c29ba039c1dbe0bca67f7312e94351bb2554784 100644
--- a/editor source/SPNATI Character Editor/EpilogueEditing/SceneObject.cs	
+++ b/editor source/SPNATI Character Editor/EpilogueEditing/SceneObject.cs	
@@ -67,8 +67,6 @@ namespace SPNATI_Character_Editor.EpilogueEditing
 		public Image Image;
 		public string Src;
 
-		public object Max { get; private set; }
-
 		public SceneObject() { }
 
 		public virtual SceneObject Copy()
@@ -828,7 +826,7 @@ namespace SPNATI_Character_Editor.EpilogueEditing
 			return changed;
 		}
 
-		public bool AdjustRotation(Point point, ScenePreview scene)
+		public bool AdjustRotation(Point point)
 		{
 			//quick and dirty - just use the angle to look from the point to the center
 
diff --git a/editor source/SPNATI Character Editor/Forms/SituationLinker.cs b/editor source/SPNATI Character Editor/Forms/SituationLinker.cs
index 2c7cb169d3b232cc98400d9e0a1fa33005a44fdf..8428991886d7b5fa67065508528e5dbaebe05106 100644
--- a/editor source/SPNATI Character Editor/Forms/SituationLinker.cs	
+++ b/editor source/SPNATI Character Editor/Forms/SituationLinker.cs	
@@ -9,7 +9,6 @@ namespace SPNATI_Character_Editor.Forms
 	/// </summary>
 	public partial class SituationLinker : Form
 	{
-		private Situation _situation;
 		private Character _character;
 
 		public SituationLinker()
@@ -19,7 +18,6 @@ namespace SPNATI_Character_Editor.Forms
 
 		public void SetData(Character character, Situation situation)
 		{
-			_situation = situation;
 			_character = character;
 
 			//find a case that looks like the situation
@@ -33,8 +31,6 @@ namespace SPNATI_Character_Editor.Forms
 					break;
 				}
 			}
-
-			_situation = situation;
 		}
 
 		private void cmdCancel_Click(object sender, EventArgs e)
diff --git a/editor source/SPNATI Character Editor/ImageLibrary.cs b/editor source/SPNATI Character Editor/ImageLibrary.cs
index 810ead4d82b7a829347e9c52a8b8c57673e923e0..295ddfcf493e073ec84ebb91e20222c16f970d49 100644
--- a/editor source/SPNATI Character Editor/ImageLibrary.cs	
+++ b/editor source/SPNATI Character Editor/ImageLibrary.cs	
@@ -1,5 +1,4 @@
 using Desktop;
-using Desktop.Messaging;
 using System.Collections.Generic;
 using System.Drawing;
 using System.IO;
@@ -26,7 +25,6 @@ namespace SPNATI_Character_Editor
 			});
 		}
 
-		private ISkin _character;
 		private Dictionary<int, List<CharacterImage>> _stages = new Dictionary<int, List<CharacterImage>>();
 		private List<CharacterImage> _allImages = new List<CharacterImage>();
 		private Dictionary<string, CharacterImage> _miniImages = new Dictionary<string, CharacterImage>();
@@ -38,7 +36,6 @@ namespace SPNATI_Character_Editor
 		/// <param name="folder"></param>
 		private void Load(ISkin character)
 		{
-			_character = character;
 			_stages.Clear();
 			_allImages.Clear();
 			string dir = character.GetDirectory();
diff --git a/editor source/SPNATI Character Editor/Providers/SkinProvider.cs b/editor source/SPNATI Character Editor/Providers/SkinProvider.cs
index 057e0fc69ceefcf4e38452066ee22daca4f4584a..c8de783536ddba6cb245a1c385d91abdac5e05dc 100644
--- a/editor source/SPNATI Character Editor/Providers/SkinProvider.cs	
+++ b/editor source/SPNATI Character Editor/Providers/SkinProvider.cs	
@@ -37,18 +37,7 @@ namespace SPNATI_Character_Editor.Providers
 			//Link up basic information with the source character
 			Character owner = record as Character;
 			SkinLink link = null;
-			AlternateSkin existing = owner.Metadata.AlternateSkins.Find(s =>
-			{
-				return s.Skins.Find(l =>
-				{
-					if (l.Folder == folder)
-					{
-						link = l;
-						return true;
-					}
-					return false;
-				}) != null;
-			});
+
 			if (link == null)
 			{
 				if (owner.Metadata.AlternateSkins.Count == 0)