Fixed everything. Also, uses compile-time polymorphism for windows now