moved includes around to make sure things like size_t are properly defined