Special thanks to the C#.Guy