More weird type class stuff. this sucks