diff --git a/extra/yassl/include/yassl_int.hpp b/extra/yassl/include/yassl_int.hpp
index d3f7754f074..60a78a3970e 100644
--- a/extra/yassl/include/yassl_int.hpp
+++ b/extra/yassl/include/yassl_int.hpp
@@ -164,7 +164,12 @@ private:
 
 // openSSL bignum
 struct BIGNUM {
-    Integer int_;
+    /*
+      gcc 2.96 fix: because of two Integer classes (yaSSL::Integer and
+      TaoCrypt::Integer), we need to explicitly state the namespace
+      here to let gcc 2.96 deduce the correct type.
+    */
+    yaSSL::Integer int_;
     void assign(const byte* b, uint s) { int_.assign(b,s); }
 };
 
diff --git a/extra/yassl/include/yassl_types.hpp b/extra/yassl/include/yassl_types.hpp
index d1d3fb829de..01b82d95039 100644
--- a/extra/yassl/include/yassl_types.hpp
+++ b/extra/yassl/include/yassl_types.hpp
@@ -445,6 +445,15 @@ const opaque master_label[MASTER_LABEL_SZ + 1] = "master secret";
 const opaque key_label   [KEY_LABEL_SZ + 1]    = "key expansion";
 
 
-} // naemspace
+} // namespace
+
+#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
+/*
+  gcc 2.96 bails out because of two declarations of byte: yaSSL::byte and
+  TaoCrypt::byte. TODO: define global types.hpp and move the declaration of
+  'byte' there.
+*/
+using yaSSL::byte;
+#endif
 
 #endif // yaSSL_TYPES_HPP