im a c# monster, needs cleaned up tho