You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@milagro.apache.org by km...@apache.org on 2019/12/13 16:34:04 UTC

[incubator-milagro-crypto-rust] 06/18: Massive reformatting and style changes

This is an automated email from the ASF dual-hosted git repository.

kmccusker pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-crypto-rust.git

commit ddb0937f5d182b72a70ae01b2c6bd02bf12cb718
Author: Kirk Baird <ba...@outlook.com>
AuthorDate: Thu Aug 8 14:32:49 2019 +1000

    Massive reformatting and style changes
---
 BenchtestALL.rs               |  16 +-
 readme.md                     |  37 ++--
 src/aes.rs                    |  79 +++++----
 src/big.rs                    | 182 +++++++++-----------
 src/bls.rs                    |  28 +--
 src/bls192.rs                 |  26 +--
 src/bls256.rs                 |  24 +--
 src/dbig.rs                   |  57 ++++---
 src/ecdh.rs                   | 121 ++++++-------
 src/ecp.rs                    | 129 +++++++-------
 src/ecp2.rs                   | 111 ++++++------
 src/ecp4.rs                   |  28 +--
 src/ecp8.rs                   |  38 ++---
 src/ff.rs                     |   4 +-
 src/fp.rs                     | 144 ++++++++--------
 src/fp12.rs                   | 385 ++++++++++++++++++++++++------------------
 src/fp16.rs                   |  24 +--
 src/fp2.rs                    |  30 ++--
 src/fp24.rs                   | 350 ++++++++++++++++++++++----------------
 src/fp4.rs                    |  34 ++--
 src/fp48.rs                   | 352 ++++++++++++++++++++++----------------
 src/fp8.rs                    |  25 ++-
 src/hash256.rs                |  16 +-
 src/lib.rs                    | 182 ++++++++++----------
 src/mpin.rs                   | 109 ++++++------
 src/mpin192.rs                |   9 +-
 src/mpin256.rs                |   6 +-
 src/nhs.rs                    |  10 +-
 src/pair.rs                   | 197 +++++++++++----------
 src/pair192.rs                |  95 ++++++-----
 src/pair256.rs                | 117 +++++++------
 src/rand.rs                   |   2 +-
 src/roms/rom_anssi_32.rs      |  14 +-
 src/roms/rom_anssi_64.rs      |  14 +-
 src/roms/rom_bls24_32.rs      |  14 +-
 src/roms/rom_bls24_64.rs      |  14 +-
 src/roms/rom_bls381_32.rs     |  14 +-
 src/roms/rom_bls381_64.rs     |  14 +-
 src/roms/rom_bls383_32.rs     |  14 +-
 src/roms/rom_bls383_64.rs     |  14 +-
 src/roms/rom_bls461_32.rs     |  14 +-
 src/roms/rom_bls461_64.rs     |  14 +-
 src/roms/rom_bls48_32.rs      |  14 +-
 src/roms/rom_bls48_64.rs      |  14 +-
 src/roms/rom_bn254CX_32.rs    |  14 +-
 src/roms/rom_bn254CX_64.rs    |  15 +-
 src/roms/rom_bn254_32.rs      |  14 +-
 src/roms/rom_bn254_64.rs      |  16 +-
 src/roms/rom_brainpool_32.rs  |  14 +-
 src/roms/rom_brainpool_64.rs  |  14 +-
 src/roms/rom_c25519_32.rs     |  14 +-
 src/roms/rom_c25519_64.rs     |  14 +-
 src/roms/rom_c41417_32.rs     |  14 +-
 src/roms/rom_c41417_64.rs     |  14 +-
 src/roms/rom_ed25519_32.rs    |  14 +-
 src/roms/rom_ed25519_64.rs    |  14 +-
 src/roms/rom_fp256bn_32.rs    |  15 +-
 src/roms/rom_fp256bn_64.rs    |  14 +-
 src/roms/rom_fp512bn_32.rs    |  14 +-
 src/roms/rom_fp512bn_64.rs    |  14 +-
 src/roms/rom_goldilocks_32.rs |  14 +-
 src/roms/rom_goldilocks_64.rs |  14 +-
 src/roms/rom_hifive_32.rs     |  14 +-
 src/roms/rom_hifive_64.rs     |  14 +-
 src/roms/rom_nist256_32.rs    |  17 +-
 src/roms/rom_nist256_64.rs    |  14 +-
 src/roms/rom_nist384_32.rs    |  14 +-
 src/roms/rom_nist384_64.rs    |  15 +-
 src/roms/rom_nist521_32.rs    |  14 +-
 src/roms/rom_nist521_64.rs    |  14 +-
 src/roms/rom_nums256e_32.rs   |  15 +-
 src/roms/rom_nums256e_64.rs   |  15 +-
 src/roms/rom_nums256w_32.rs   |  14 +-
 src/roms/rom_nums256w_64.rs   |  14 +-
 src/roms/rom_nums384e_32.rs   |  15 +-
 src/roms/rom_nums384e_64.rs   |  15 +-
 src/roms/rom_nums384w_32.rs   |  15 +-
 src/roms/rom_nums384w_64.rs   |  15 +-
 src/roms/rom_nums512e_32.rs   |  14 +-
 src/roms/rom_nums512e_64.rs   |  14 +-
 src/roms/rom_nums512w_32.rs   |  14 +-
 src/roms/rom_nums512w_64.rs   |  14 +-
 src/roms/rom_rsa2048_32.rs    |   2 +-
 src/roms/rom_rsa2048_64.rs    |   2 +-
 src/roms/rom_rsa3072_32.rs    |   2 +-
 src/roms/rom_rsa3072_64.rs    |   2 +-
 src/roms/rom_rsa4096_32.rs    |   2 +-
 src/roms/rom_rsa4096_64.rs    |   2 +-
 src/roms/rom_secp256k1_32.rs  |  14 +-
 src/roms/rom_secp256k1_64.rs  |  14 +-
 src/sha3.rs                   |   2 +-
 src/types.rs                  |  39 +++--
 92 files changed, 1955 insertions(+), 1807 deletions(-)

diff --git a/BenchtestALL.rs b/BenchtestALL.rs
index 55961be..ff8fb92 100644
--- a/BenchtestALL.rs
+++ b/BenchtestALL.rs
@@ -231,10 +231,10 @@ fn bn254(mut rng: &mut RAND) {
 	let mut fail = false;
 	println!("\nTesting/Timing BN254 Pairings");
 
-	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
+	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
 		println!("BN Pairing-Friendly Curve");
 	}
-	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BLS {
+	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bls {
 		println!("BLS Pairing-Friendly Curve");
 	}
 
@@ -391,10 +391,10 @@ fn bls383(mut rng: &mut RAND) {
 	let mut fail = false;
 	println!("\nTesting/Timing BLS383 Pairings");
 
-	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
+	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
 		println!("BN Pairing-Friendly Curve");
 	}
-	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BLS {
+	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bls {
 		println!("BLS Pairing-Friendly Curve");
 	}
 
@@ -551,10 +551,10 @@ fn bls24(mut rng: &mut RAND) {
 	let mut fail = false;
 	println!("\nTesting/Timing BLS24 Pairings");
 
-	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
+	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
 		println!("BN Pairing-Friendly Curve");
 	}
-	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BLS {
+	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bls {
 		println!("BLS24 Pairing-Friendly Curve");
 	}
 
@@ -711,10 +711,10 @@ fn bls48(mut rng: &mut RAND) {
 	let mut fail = false;
 	println!("\nTesting/Timing BLS48 Pairings");
 
-	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
+	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
 		println!("BN Pairing-Friendly Curve");
 	}
-	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BLS {
+	if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bls {
 		println!("BLS48 Pairing-Friendly Curve");
 	}
 
diff --git a/readme.md b/readme.md
index da805e0..98f7d20 100644
--- a/readme.md
+++ b/readme.md
@@ -1,26 +1,28 @@
+# Apache Milagro Crypto Library - Rust Version
+
 NOTE: Updated to Rust 2018
 
-NOTE: This version of the library requires Version 1.31+ of Rust for 64-bit 
-integer support and for Rust 2018. 
+NOTE: This version of the library requires Version 1.31+ of Rust for 64-bit
+integer support and for Rust 2018.
 
 Now AMCL version 3 is distributed as a cargo crate.
 
 Namespaces are used to separate different curves.
 
-To build the library and see it in action, copy all of the files in this 
-directory and its subdirectories to a fresh root directory. 
+To build the library and see it in action, copy all of the files in this
+directory and its subdirectories to a fresh root directory.
 
 Then for example execute
-
+```
 cargo rustc  --release --features "bn254 bls383 bls24 bls48 ed25519 nist256 goldilocks rsa2048"
-
-This will create a build of the library for the current default target (be it 32 or 64 bits). 
+```
+This will create a build of the library for the current default target (be it 32 or 64 bits).
 
 (To test a 32-bit environment you can follow the Web Assembly (wasm) readme instructions for rust)
 
-Next copy the library from target/release/libamcl.rlib into the root 
+Next copy the library from `target/release/libamcl.rlib` into the root
 directory and execute
-
+```
 rustc TestALL.rs --extern amcl=libamcl.rlib
 
 rustc TestBLS.rs --extern amcl=libamcl.rlib
@@ -28,23 +30,29 @@ rustc TestBLS.rs --extern amcl=libamcl.rlib
 rustc BenchtestALL.rs --extern amcl=libamcl.rlib
 
 rustc TestNHS.rs --extern amcl=libamcl.rlib
+```
 
 Finally execute these programs.
 
-To add amcl functionality to your own programs, add a dependency to your 
-Cargo.toml file. For example to use the curve bls48, add this dependency
+To add amcl functionality to your own programs, add a dependency to your
+`Cargo.toml` file. For example to use the curve bls48, add this dependency
 
+```
 [dependencies]
-
 amcl = { version = "0.2.0",  optional = true, default-features = false, features = ["bls48"]}
+```
 
-if published to crates.io, or 
+If published to crates.io, or
 
+```
 amcl = { version = "0.2.0",  optional = true, default-features = false, features = ["bls48"], path="your_amcl_location" }
+```
 
 And to use primitives of the needed curve in your source code:
 
-use amcl::bls48::{ECP, ECP8}; //any primitive you need
+```
+use amcl::bls48::{ECP, ECP8}; // any primitive you need
+```
 
 Full list of features:
 
@@ -76,7 +84,6 @@ Full list of features:
   * bls461
   * bls24
   * bls48
-  
 * RSA
   * rsa2048
   * rsa3072
diff --git a/src/aes.rs b/src/aes.rs
index 32a0f86..265cdec 100644
--- a/src/aes.rs
+++ b/src/aes.rs
@@ -184,34 +184,33 @@ pub struct AES {
 
 impl AES {
     fn rotl8(x: u32) -> u32 {
-        return ((x) << 8) | ((x) >> 24);
+        ((x) << 8) | ((x) >> 24)
     }
 
     fn rotl16(x: u32) -> u32 {
-        return ((x) << 16) | ((x) >> 16);
+        ((x) << 16) | ((x) >> 16)
     }
 
     fn rotl24(x: u32) -> u32 {
-        return ((x) << 24) | ((x) >> 8);
+        ((x) << 24) | ((x) >> 8)
     }
 
     fn pack(b: [u8; 4]) -> u32 {
         // pack bytes into a 32-bit Word
-        return ((((b[3]) & 0xff) as u32) << 24)
+        ((((b[3]) & 0xff) as u32) << 24)
             | ((((b[2]) & 0xff) as u32) << 16)
             | ((((b[1]) & 0xff) as u32) << 8)
-            | (((b[0]) & 0xff) as u32);
+            | (((b[0]) & 0xff) as u32)
     }
 
     fn unpack(a: u32) -> [u8; 4] {
         // unpack bytes from a word
-        let b: [u8; 4] = [
+        [
             (a & 0xff) as u8,
             ((a >> 8) & 0xff) as u8,
             ((a >> 16) & 0xff) as u8,
             ((a >> 24) & 0xff) as u8,
-        ];
-        return b;
+        ]
     }
 
     fn bmul(x: u8, y: u8) -> u8 {
@@ -234,7 +233,7 @@ impl AES {
         b[1] = FBSUB[b[1] as usize];
         b[2] = FBSUB[b[2] as usize];
         b[3] = FBSUB[b[3] as usize];
-        return AES::pack(b);
+        AES::pack(b)
     }
 
     fn product(x: u32, y: u32) -> u8 {
@@ -242,10 +241,10 @@ impl AES {
         let xb = AES::unpack(x);
         let yb = AES::unpack(y);
 
-        return AES::bmul(xb[0], yb[0])
+        AES::bmul(xb[0], yb[0])
             ^ AES::bmul(xb[1], yb[1])
             ^ AES::bmul(xb[2], yb[2])
-            ^ AES::bmul(xb[3], yb[3]);
+            ^ AES::bmul(xb[3], yb[3])
     }
 
     fn invmixcol(x: u32) -> u32 {
@@ -260,7 +259,7 @@ impl AES {
         m = AES::rotl24(m);
         b[0] = AES::product(m, x);
         let y = AES::pack(b);
-        return y;
+        y
     }
 
     fn increment(f: &mut [u8; 16]) {
@@ -283,7 +282,7 @@ impl AES {
         }
     }
 
-    // reset cipher
+    /// Reset cipher.
     pub fn reset(&mut self, m: usize, iv: Option<[u8; 16]>) {
         // reset mode, or reset iv
         self.mode = m;
@@ -331,31 +330,31 @@ impl AES {
         while j < n {
             self.fkey[j] =
                 self.fkey[j - nk] ^ AES::subbyte(AES::rotl24(self.fkey[j - 1])) ^ (RCO[k] as u32);
-            if nk<=6 {
-		for i in 1..nk {
-			if (i + j) >= n {
-				break;
-			}
-			self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1];
-		}
-	    } else {
-		for i in 1..4  {
-			if (i + j) >= n {
-				break;
-			}
-			self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1];
-		}
-
-		if (j + 4) < n {
-			self.fkey[j + 4] = self.fkey[j + 4 - nk] ^ AES::subbyte(self.fkey[j + 3]);
-		}
-		for i in 5..nk {
-			if (i + j) >= n {
-				break;
-			}
-			self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1];
-		}
-	    }
+            if nk <= 6 {
+                for i in 1..nk {
+                    if (i + j) >= n {
+                        break;
+                    }
+                    self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1];
+                }
+            } else {
+                for i in 1..4 {
+                    if (i + j) >= n {
+                        break;
+                    }
+                    self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1];
+                }
+
+                if (j + 4) < n {
+                    self.fkey[j + 4] = self.fkey[j + 4 - nk] ^ AES::subbyte(self.fkey[j + 3]);
+                }
+                for i in 5..nk {
+                    if (i + j) >= n {
+                        break;
+                    }
+                    self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1];
+                }
+            }
             j += nk;
             k += 1;
         }
@@ -376,7 +375,7 @@ impl AES {
         for j in n - 4..n {
             self.rkey[j + 4 - n] = self.fkey[j]
         }
-        return true;
+        true
     }
 
     pub fn getreg(&mut self) -> [u8; 16] {
@@ -384,7 +383,7 @@ impl AES {
         for i in 0..16 {
             ir[i] = self.f[i]
         }
-        return ir;
+        ir
     }
 
     // Encrypt a single block
diff --git a/src/big.rs b/src/big.rs
index 99342f4..a5424b2 100644
--- a/src/big.rs
+++ b/src/big.rs
@@ -25,8 +25,8 @@ use super::super::arch::DChunk;
 use super::dbig::DBig;
 use rand::RAND;
 
-pub use super::rom::MODBYTES;
 pub use super::rom::BASEBITS;
+pub use super::rom::MODBYTES;
 use std::cmp::Ordering;
 use std::fmt;
 
@@ -44,30 +44,26 @@ pub struct Big {
 }
 
 impl Clone for Big {
-    fn clone(&self) -> Big { *self }
+    fn clone(&self) -> Big {
+        *self
+    }
 }
 
 impl fmt::Display for Big {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        let mut big = self.clone();
-        write!(f, "Big: [ {} ]", big.tostring())
+        write!(f, "Big: [ {} ]", self.tostring())
     }
 }
 
 impl fmt::Debug for Big {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        let mut big = self.clone();
-        write!(f, "Big: [ {} ]", big.tostring())
+        write!(f, "Big: [ {} ]", self.tostring())
     }
 }
 
 impl PartialEq for Big {
     fn eq(&self, other: &Big) -> bool {
-        if Big::comp(self,other)==0 {
-            return true;
-        } else {
-            return false;
-        }
+        Big::comp(self, other) == 0
     }
 }
 
@@ -80,11 +76,11 @@ impl Ord for Big {
         if r < 0 {
             return Ordering::Less;
         }
-        return Ordering::Equal;
+        Ordering::Equal
     }
 }
 
-impl Eq for Big { }
+impl Eq for Big {}
 
 impl PartialOrd for Big {
     fn partial_cmp(&self, other: &Big) -> Option<Ordering> {
@@ -97,34 +93,29 @@ impl Big {
         Big { w: [0; NLEN] }
     }
 
+    /// Convert a integer to a Big
     pub fn new_int(x: isize) -> Big {
         let mut s = Big::new();
         s.w[0] = x as Chunk;
-        return s;
+        s
     }
 
+    /// Takes an array of integers and converts to a Big
     pub fn new_ints(a: &[Chunk]) -> Big {
         let mut s = Big::new();
         for i in 0..NLEN {
             s.w[i] = a[i]
         }
-        return s;
+        s
     }
 
+    /// Creates a copy of the Big
     pub fn new_copy(y: &Big) -> Big {
         let mut s = Big::new();
         for i in 0..NLEN {
             s.w[i] = y.w[i]
         }
-        return s;
-    }
-
-    pub fn new_big(y: &Big) -> Big {
-        let mut s = Big::new();
-        for i in 0..NLEN {
-            s.w[i] = y.w[i]
-        }
-        return s;
+        s
     }
 
     pub fn new_dcopy(y: &DBig) -> Big {
@@ -132,11 +123,11 @@ impl Big {
         for i in 0..NLEN {
             s.w[i] = y.w[i]
         }
-        return s;
+        s
     }
 
     pub fn get(&self, i: usize) -> Chunk {
-        return self.w[i];
+        self.w[i]
     }
 
     pub fn set(&mut self, i: usize, x: Chunk) {
@@ -151,24 +142,24 @@ impl Big {
         self.w[NLEN - 1] |= x;
     }
 
-    // test for zero
+    /// test for zero
     pub fn iszilch(&self) -> bool {
         for i in 0..NLEN {
             if self.w[i] != 0 {
                 return false;
             }
         }
-        return true;
+        true
     }
 
-    // set to zero
+    /// set to zero
     pub fn zero(&mut self) {
         for i in 0..NLEN {
             self.w[i] = 0
         }
     }
 
-    // Test for equal to one
+    /// Test for equal to one
     pub fn isunity(&self) -> bool {
         for i in 1..NLEN {
             if self.w[i] != 0 {
@@ -178,7 +169,7 @@ impl Big {
         if self.w[0] != 1 {
             return false;
         }
-        return true;
+        true
     }
 
     /// Set to one
@@ -208,7 +199,7 @@ impl Big {
         let prod: DChunk = (a as DChunk) * (b as DChunk) + (c as DChunk) + (r as DChunk);
         let bot = (prod & (BMASK as DChunk)) as Chunk;
         let top = (prod >> BASEBITS) as Chunk;
-        return (top, bot);
+        (top, bot)
     }
 
     /// normalise Big - force all digits < 2^BASEBITS
@@ -220,7 +211,7 @@ impl Big {
             carry = d >> BASEBITS;
         }
         self.w[NLEN - 1] += carry;
-        return (self.w[NLEN - 1] >> ((8 * MODBYTES) % BASEBITS)) as Chunk;
+        (self.w[NLEN - 1] >> ((8 * MODBYTES) % BASEBITS)) as Chunk
     }
 
     /// Conditional swap of two bigs depending on d using XOR - no branches
@@ -273,10 +264,11 @@ impl Big {
             self.w[i] = ((self.w[i] << k) & BMASK) | (self.w[i - 1] >> (BASEBITS - n));
         }
         self.w[0] = (self.w[0] << n) & BMASK;
-        return (self.w[NLEN - 1] >> ((8 * MODBYTES) % BASEBITS)) as isize; // return excess - only used in ff.c
+        // return excess - only used in ff.c
+        (self.w[NLEN - 1] >> ((8 * MODBYTES) % BASEBITS)) as isize
     }
 
-    /// general shift left
+    /// General shift left
     pub fn shl(&mut self, k: usize) {
         let n = k % BASEBITS;
         let m = k / BASEBITS;
@@ -294,7 +286,7 @@ impl Big {
         }
     }
 
-    // return number of bits
+    /// Return number of bits
     pub fn nbits(&self) -> usize {
         let mut k = NLEN - 1;
         let mut s = Big::new_copy(&self);
@@ -311,11 +303,11 @@ impl Big {
             c /= 2;
             bts += 1;
         }
-        return bts;
+        bts
     }
 
     // Convert to Hex String
-    pub fn tostring(&mut self) -> String {
+    pub fn tostring(&self) -> String {
         let mut s = String::new();
         let mut len = self.nbits();
 
@@ -335,9 +327,10 @@ impl Big {
             b.shr(i * 4);
             s = s + &format!("{:X}", b.w[0] & 15);
         }
-        return s;
+        s
     }
 
+    /// From Hex String
     pub fn fromstring(val: String) -> Big {
         let mut res = Big::new();
         let len = val.len();
@@ -346,63 +339,59 @@ impl Big {
         res.w[0] += n as Chunk;
         for i in 1..len {
             res.shl(4);
-            let op = &val[i..i+1];
+            let op = &val[i..=i];
             let n = u8::from_str_radix(op, 16).unwrap();
             res.w[0] += n as Chunk;
         }
-        return res;
-    }
-
-    pub fn from_hex(val: String) -> Big {
-        Big::fromstring(val)
-    }
-
-    pub fn to_hex(&mut self) -> String {
-        self.tostring()
+        res
     }
 
+    // Self += r
     pub fn add(&mut self, r: &Big) {
         for i in 0..NLEN {
             self.w[i] += r.w[i]
         }
     }
 
+    //? Bitwise OR
     pub fn or(&mut self, r: &Big) {
         for i in 0..NLEN {
             self.w[i] |= r.w[i]
         }
     }
 
+    /// Self * 2
     pub fn dbl(&mut self) {
         for i in 0..NLEN {
             self.w[i] += self.w[i]
         }
     }
 
-    // return this+x
+    /// Return self + x
     pub fn plus(&self, x: &Big) -> Big {
         let mut s = Big::new();
         for i in 0..NLEN {
             s.w[i] = self.w[i] + x.w[i];
         }
-        return s;
+        s
     }
 
+    /// Return self + 1
     pub fn inc(&mut self, x: isize) {
         self.norm();
         self.w[0] += x as Chunk;
     }
 
-    // return self-x
+    ///  Return self - x
     pub fn minus(&self, x: &Big) -> Big {
         let mut d = Big::new();
         for i in 0..NLEN {
             d.w[i] = self.w[i] - x.w[i];
         }
-        return d;
+        d
     }
 
-    // self-=x
+    // self -= x
     pub fn sub(&mut self, x: &Big) {
         for i in 0..NLEN {
             self.w[i] -= x.w[i];
@@ -410,7 +399,6 @@ impl Big {
     }
 
     // reverse subtract this=x-this
-
     pub fn rsub(&mut self, x: &Big) {
         for i in 0..NLEN {
             self.w[i] = x.w[i] - self.w[i]
@@ -448,7 +436,7 @@ impl Big {
             m.fshl(8);
             m.w[0] += (b[i + n] & 0xff) as Chunk;
         }
-        return m;
+        m
     }
 
     pub fn tobytes(&mut self, b: &mut [u8]) {
@@ -456,7 +444,7 @@ impl Big {
     }
 
     pub fn frombytes(b: &[u8]) -> Big {
-        return Big::frombytearray(b, 0);
+        Big::frombytearray(b, 0)
     }
 
     // self*=x, where x is >NEXCESS
@@ -468,7 +456,7 @@ impl Big {
             carry = tuple.0;
             self.w[i] = tuple.1;
         }
-        return carry;
+        carry
     }
 
     // self*=c and catch overflow in DBig
@@ -481,7 +469,7 @@ impl Big {
             m.w[j] = tuple.1;
         }
         m.w[NLEN] = carry;
-        return m;
+        m
     }
 
     // divide by 3
@@ -494,7 +482,7 @@ impl Big {
             self.w[i] = ak / 3;
             carry = ak % 3;
         }
-        return carry;
+        carry
     }
 
     // return a*b where result fits in a Big
@@ -510,7 +498,7 @@ impl Big {
                 }
             }
         }
-        return c;
+        c
     }
 
     // Compare a and b, return 0 if a==b, -1 if a<b, +1 if a>b. Inputs must be normalised
@@ -525,7 +513,7 @@ impl Big {
                 return -1;
             }
         }
-        return 0;
+        0
     }
 
     // set x = x mod 2^m
@@ -575,31 +563,30 @@ impl Big {
         t1 <<= 4;
         u += t1;
 
-        return u;
+        u
     }
 
-    // return parity
+    /// Return parity
     pub fn parity(&self) -> isize {
-        return (self.w[0] % 2) as isize;
+        (self.w[0] % 2) as isize
     }
 
-    // return n-th bit
+    // Return n-th bit
     pub fn bit(&self, n: usize) -> isize {
         if (self.w[n / (BASEBITS as usize)] & (1 << (n % BASEBITS))) > 0 {
             return 1;
-        } else {
-            return 0;
         }
+        0
     }
 
-    // return n last bits
+    /// Return n last bits
     pub fn lastbits(&mut self, n: usize) -> isize {
         let msk = ((1 << n) - 1) as Chunk;
         self.norm();
-        return (self.w[0] & msk) as isize;
+        (self.w[0] & msk) as isize
     }
 
-    // a=1/a mod 2^256. This is very fast!
+    /// a = 1/a mod 2^256. This is very fast!
     pub fn invmod2m(&mut self) {
         let mut u = Big::new();
         let mut b = Big::new();
@@ -639,7 +626,7 @@ impl Big {
         self.norm();
     }
 
-    // reduce self mod m
+    /// reduce self mod m
     pub fn rmod(&mut self, n: &Big) {
         let mut k = 0;
         let mut m = Big::new_copy(n);
@@ -670,7 +657,7 @@ impl Big {
         }
     }
 
-    // divide self by m
+    /// Divide self by m
     pub fn div(&mut self, n: &Big) {
         let mut k = 0;
         self.norm();
@@ -703,7 +690,7 @@ impl Big {
         }
     }
 
-    // get 8*MODBYTES size random number
+    /// Get 8*MODBYTES size random number
     pub fn random(rng: &mut RAND) -> Big {
         let mut m = Big::new();
         let mut j = 0;
@@ -723,10 +710,10 @@ impl Big {
             j += 1;
             j &= 7;
         }
-        return m;
+        m
     }
 
-    // Create random Big in portable way, one bit at a time
+    /// Create random Big in portable way, one bit at a time
     pub fn randomnum(q: &Big, rng: &mut RAND) -> Big {
         let mut d = DBig::new();
         let mut j = 0;
@@ -746,10 +733,10 @@ impl Big {
             j &= 7;
         }
         let m = d.dmod(q);
-        return m;
+        m
     }
 
-    // Jacobi Symbol (this/p). Returns 0, 1 or -1
+    /// Jacobi Symbol (this/p). Returns 0, 1 or -1
     pub fn jacobi(&mut self, p: &Big) -> isize {
         let mut m: usize = 0;
         let mut t = Big::new();
@@ -788,12 +775,11 @@ impl Big {
         }
         if m == 0 {
             return 1;
-        } else {
-            return -1;
         }
+        -1
     }
 
-    // self=1/self mod p. Binary method
+    /// self = 1/self mod p. Binary method
     pub fn invmodp(&mut self, p: &Big) {
         self.rmod(p);
         let mut u = Big::new_copy(self);
@@ -851,8 +837,7 @@ impl Big {
         }
     }
 
-    // return a*b as DBig
-
+    /// return a*b as DBig
     pub fn mul(a: &Big, b: &Big) -> DBig {
         let mut c = DBig::new();
         let rm = BMASK as DChunk;
@@ -869,7 +854,7 @@ impl Big {
         for k in 1..NLEN {
             s += d[k];
             t = co + s;
-            for i in 1 + k / 2..k + 1 {
+            for i in 1 + k / 2..=k {
                 t += ((a.w[i] - a.w[k - i]) as DChunk) * ((b.w[k - i] - b.w[i]) as DChunk)
             }
             c.w[k] = (t & rm) as Chunk;
@@ -888,10 +873,10 @@ impl Big {
             co = t >> rb;
         }
         c.w[2 * NLEN - 1] = co as Chunk;
-        return c;
+        c
     }
 
-    // return a^2 as DBig
+    /// return a^2 as DBig
     pub fn sqr(a: &Big) -> DBig {
         let mut c = DBig::new();
         let rm = BMASK as DChunk;
@@ -958,9 +943,10 @@ impl Big {
         co = t >> rb;
         c.w[DNLEN - 1] = co as Chunk;
 
-        return c;
+        c
     }
 
+    /// Montegomery Reduction
     pub fn monty(md: &Big, mc: Chunk, d: &mut DBig) -> Big {
         let mut b = Big::new();
         let rm = BMASK as DChunk;
@@ -1002,7 +988,7 @@ impl Big {
             s -= dd[k + 1 - NLEN];
         }
         b.w[NLEN - 1] = (c & rm) as Chunk;
-        return b;
+        b
     }
 
     pub fn ssn(r: &mut Big, a: &Big, m: &mut Big) -> isize {
@@ -1019,35 +1005,35 @@ impl Big {
         }
         m.w[n] >>= 1;
         r.w[n] = a.w[n] - m.w[n] + carry;
-        return ((r.w[n] >> (arch::CHUNK - 1)) & 1) as isize;
+        ((r.w[n] >> (arch::CHUNK - 1)) & 1) as isize
     }
 
-    // return a*b mod m
+    /// return a*b mod m
     pub fn modmul(a1: &Big, b1: &Big, m: &Big) -> Big {
         let mut a = Big::new_copy(a1);
         let mut b = Big::new_copy(b1);
         a.rmod(m);
         b.rmod(m);
         let mut d = Big::mul(&a, &b);
-        return d.dmod(m);
+        d.dmod(m)
     }
 
-    // return a^2 mod m
+    /// return a^2 mod m
     pub fn modsqr(a1: &Big, m: &Big) -> Big {
         let mut a = Big::new_copy(a1);
         a.rmod(m);
         let mut d = Big::sqr(&a);
-        return d.dmod(m);
+        d.dmod(m)
     }
 
-    // return -a mod m
+    /// return -a mod m
     pub fn modneg(a1: &Big, m: &Big) -> Big {
         let mut a = Big::new_copy(a1);
         a.rmod(m);
-        return m.minus(&a);
+        m.minus(&a)
     }
 
-    // return this^e mod m
+    /// return this^e mod m
     pub fn powmod(&mut self, e1: &Big, m: &Big) -> Big {
         self.norm();
         let mut e = Big::new_copy(e1);
@@ -1064,8 +1050,8 @@ impl Big {
             if z.iszilch() {
                 break;
             }
-            s = Big::modsqr(&mut s, m);
+            s = Big::modsqr(&s, m);
         }
-        return a;
+        a
     }
 }
diff --git a/src/bls.rs b/src/bls.rs
index 2ef80a4..07b8353 100644
--- a/src/bls.rs
+++ b/src/bls.rs
@@ -17,13 +17,13 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use std::str;
 use super::ecp::ECP;
 use super::ecp2::ECP2;
+use std::str;
 //use super::fp12::FP12;
+use super::big;
 use super::big::Big;
 use super::pair;
-use super::big;
 use super::rom;
 
 use rand::RAND;
@@ -47,28 +47,28 @@ fn bls_hashit(m: &str) -> ECP {
     }
     sh.shake(&mut hm, BFS);
     let P = ECP::mapit(&hm);
-    return P;
+    P
 }
 
-// generate key pair, private key s, public key w
+/// Generate key pair, private key s, public key w
 pub fn key_pair_generate(mut rng: &mut RAND, s: &mut [u8], w: &mut [u8]) -> isize {
     let q = Big::new_ints(&rom::CURVE_ORDER);
     let g = ECP2::generator();
     let mut sc = Big::randomnum(&q, &mut rng);
     sc.tobytes(s);
-    pair::g2mul(&g, &mut sc).tobytes(w);
-    return BLS_OK;
+    pair::g2mul(&g, &sc).tobytes(w);
+    BLS_OK
 }
 
-// Sign message m using private key s to produce signature sig
+/// Sign message m using private key s to produce signature sig.
 pub fn sign(sig: &mut [u8], m: &str, s: &[u8]) -> isize {
     let d = bls_hashit(m);
     let mut sc = Big::frombytes(&s);
     pair::g1mul(&d, &mut sc).tobytes(sig, true);
-    return BLS_OK;
+    BLS_OK
 }
 
-// Verify signature given message m, the signature sig, and the public key w
+/// Verify signature given message m, the signature sig, and the public key w
 pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     let hm = bls_hashit(m);
     let mut d = ECP::frombytes(&sig);
@@ -77,10 +77,10 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     d.neg();
 
     // Use new multi-pairing mechanism
-    let mut r=pair::initmp();
-    pair::another(&mut r,&g,&d);
-    pair::another(&mut r,&pk,&hm);
-    let mut v=pair::miller(&r);
+    let mut r = pair::initmp();
+    pair::another(&mut r, &g, &d);
+    pair::another(&mut r, &pk, &hm);
+    let mut v = pair::miller(&r);
 
     //.. or alternatively
     //    let mut v = pair::ate2(&g, &d, &pk, &hm);
@@ -89,5 +89,5 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     if v.isunity() {
         return BLS_OK;
     }
-    return BLS_FAIL;
+    BLS_FAIL
 }
diff --git a/src/bls192.rs b/src/bls192.rs
index b2c7e97..3654452 100644
--- a/src/bls192.rs
+++ b/src/bls192.rs
@@ -17,13 +17,13 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use std::str;
 use super::ecp::ECP;
 use super::ecp4::ECP4;
+use std::str;
 //use super::fp24::FP24;
+use super::big;
 use super::big::Big;
 use super::pair192;
-use super::big;
 use super::rom;
 
 use rand::RAND;
@@ -49,28 +49,28 @@ fn bls_hashit(m: &str) -> ECP {
     }
     sh.shake(&mut hm, BFS);
     let P = ECP::mapit(&hm);
-    return P;
+    P
 }
 
-// generate key pair, private key s, public key w
+/// Generate key pair, private key s, public key w
 pub fn key_pair_generate(mut rng: &mut RAND, s: &mut [u8], w: &mut [u8]) -> isize {
     let q = Big::new_ints(&rom::CURVE_ORDER);
     let g = ECP4::generator();
     let mut sc = Big::randomnum(&q, &mut rng);
     sc.tobytes(s);
     pair192::g2mul(&g, &mut sc).tobytes(w);
-    return BLS_OK;
+    BLS_OK
 }
 
-// Sign message m using private key s to produce signature sig
+/// Sign message m using private key s to produce signature sig
 pub fn sign(sig: &mut [u8], m: &str, s: &[u8]) -> isize {
     let d = bls_hashit(m);
     let mut sc = Big::frombytes(&s);
     pair192::g1mul(&d, &mut sc).tobytes(sig, true);
-    return BLS_OK;
+    BLS_OK
 }
 
-// Verify signature given message m, the signature sig, and the public key w
+/// Verify signature given message m, the signature sig, and the public key w
 pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     let hm = bls_hashit(m);
     let mut d = ECP::frombytes(&sig);
@@ -79,10 +79,10 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     d.neg();
 
     // Use new multi-pairing mechanism
-    let mut r=pair192::initmp();
-    pair192::another(&mut r,&g,&d);
-    pair192::another(&mut r,&pk,&hm);
-    let mut v=pair192::miller(&r);
+    let mut r = pair192::initmp();
+    pair192::another(&mut r, &g, &d);
+    pair192::another(&mut r, &pk, &hm);
+    let mut v = pair192::miller(&r);
 
     //.. or alternatively
     //    let mut v = pair192::ate2(&g, &d, &pk, &hm);
@@ -91,5 +91,5 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     if v.isunity() {
         return BLS_OK;
     }
-    return BLS_FAIL;
+    BLS_FAIL
 }
diff --git a/src/bls256.rs b/src/bls256.rs
index a0ac094..c3722f3 100644
--- a/src/bls256.rs
+++ b/src/bls256.rs
@@ -17,13 +17,13 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use std::str;
 use super::ecp::ECP;
 use super::ecp8::ECP8;
+use std::str;
 //use super::fp48::FP48;
+use super::big;
 use super::big::Big;
 use super::pair256;
-use super::big;
 use super::rom;
 
 use rand::RAND;
@@ -47,17 +47,17 @@ fn bls_hashit(m: &str) -> ECP {
     }
     sh.shake(&mut hm, BFS);
     let P = ECP::mapit(&hm);
-    return P;
+    P
 }
 
-// generate key pair, private key s, public key w
+/// Generate key pair, private key s, public key w
 pub fn key_pair_generate(mut rng: &mut RAND, s: &mut [u8], w: &mut [u8]) -> isize {
     let q = Big::new_ints(&rom::CURVE_ORDER);
     let g = ECP8::generator();
     let mut sc = Big::randomnum(&q, &mut rng);
     sc.tobytes(s);
     pair256::g2mul(&g, &mut sc).tobytes(w);
-    return BLS_OK;
+    BLS_OK
 }
 
 // Sign message m using private key s to produce signature sig
@@ -65,10 +65,10 @@ pub fn sign(sig: &mut [u8], m: &str, s: &[u8]) -> isize {
     let d = bls_hashit(m);
     let mut sc = Big::frombytes(&s);
     pair256::g1mul(&d, &mut sc).tobytes(sig, true);
-    return BLS_OK;
+    BLS_OK
 }
 
-// Verify signature given message m, the signature sig, and the public key w
+/// Verify signature given message m, the signature sig, and the public key w
 pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     let hm = bls_hashit(m);
     let mut d = ECP::frombytes(&sig);
@@ -77,10 +77,10 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     d.neg();
 
     // Use new multi-pairing mechanism
-    let mut r=pair256::initmp();
-    pair256::another(&mut r,&g,&d);
-    pair256::another(&mut r,&pk,&hm);
-    let mut v=pair256::miller(&r);
+    let mut r = pair256::initmp();
+    pair256::another(&mut r, &g, &d);
+    pair256::another(&mut r, &pk, &hm);
+    let mut v = pair256::miller(&r);
 
     //.. or alternatively
     //    let mut v = pair256::ate2(&g, &d, &pk, &hm);
@@ -89,5 +89,5 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize {
     if v.isunity() {
         return BLS_OK;
     }
-    return BLS_FAIL;
+    BLS_FAIL
 }
diff --git a/src/dbig.rs b/src/dbig.rs
index 31cf402..2479637 100644
--- a/src/dbig.rs
+++ b/src/dbig.rs
@@ -18,9 +18,9 @@ under the License.
 */
 
 use super::super::arch;
+use super::super::arch::Chunk;
 use super::big;
 use super::big::Big;
-use super::super::arch::Chunk;
 
 #[derive(Copy)]
 pub struct DBig {
@@ -28,7 +28,9 @@ pub struct DBig {
 }
 
 impl Clone for DBig {
-    fn clone(&self) -> DBig { *self }
+    fn clone(&self) -> DBig {
+        *self
+    }
 }
 
 impl DBig {
@@ -43,7 +45,7 @@ impl DBig {
         for i in 0..big::DNLEN {
             s.w[i] = y.w[i]
         }
-        return s;
+        s
     }
 
     pub fn new_scopy(x: &Big) -> DBig {
@@ -51,16 +53,16 @@ impl DBig {
         for i in 0..big::NLEN {
             b.w[i] = x.w[i];
         }
-        b.w[big::NLEN - 1] = x.get(big::NLEN - 1) & big::BMASK; /* top word normalized */
+        b.w[big::NLEN - 1] = x.get(big::NLEN - 1) & big::BMASK; // top word normalized
         b.w[big::NLEN] = x.get(big::NLEN - 1) >> big::BASEBITS;
 
         for i in big::NLEN + 1..big::DNLEN {
             b.w[i] = 0
         }
-        return b;
+        b
     }
 
-    /* split DBig at position n, return higher half, keep lower half */
+    /// split DBig at position n, return higher half, keep lower half
     pub fn split(&mut self, n: usize) -> Big {
         let mut t = Big::new();
         let m = n % big::BASEBITS;
@@ -72,10 +74,10 @@ impl DBig {
             t.set(i + 1 - big::NLEN, nw);
         }
         self.w[big::NLEN - 1] &= ((1 as Chunk) << m) - 1;
-        return t;
+        t
     }
 
-    /* general shift left */
+    /// General shift left
     pub fn shl(&mut self, k: usize) {
         let n = k % big::BASEBITS;
         let m = k / big::BASEBITS;
@@ -92,7 +94,7 @@ impl DBig {
         }
     }
 
-    /* general shift right */
+    /// General shift right
     pub fn shr(&mut self, k: usize) {
         let n = k % big::BASEBITS;
         let m = k / big::BASEBITS;
@@ -106,13 +108,14 @@ impl DBig {
         }
     }
 
-    /* Copy from another DBig */
+    /// Copy from another DBig
     pub fn copy(&mut self, x: &DBig) {
         for i in 0..big::DNLEN {
             self.w[i] = x.w[i];
         }
     }
 
+    /// Copy from a Big
     pub fn ucopy(&mut self, x: &Big) {
         for i in 0..big::NLEN {
             self.w[i] = 0;
@@ -129,28 +132,28 @@ impl DBig {
         }
     }
 
-    /* self+=x */
+    /// self += x
     pub fn add(&mut self, x: &DBig) {
         for i in 0..big::DNLEN {
             self.w[i] += x.w[i];
         }
     }
 
-    /* self-=x */
+    /// self -= x
     pub fn sub(&mut self, x: &DBig) {
         for i in 0..big::DNLEN {
             self.w[i] -= x.w[i];
         }
     }
 
-    /* self=x-self */
+    /// self = x - self
     pub fn rsub(&mut self, x: &DBig) {
         for i in 0..big::DNLEN {
             self.w[i] = x.w[i] - self.w[i];
         }
     }
 
-    /* Compare a and b, return 0 if a==b, -1 if a<b, +1 if a>b. Inputs must be normalised */
+    /// Compare a and b, return 0 if a==b, -1 if a<b, +1 if a>b. Inputs must be normalised
     pub fn comp(a: &DBig, b: &DBig) -> isize {
         for i in (0..big::DNLEN).rev() {
             if a.w[i] == b.w[i] {
@@ -162,10 +165,10 @@ impl DBig {
                 return -1;
             }
         }
-        return 0;
+        0
     }
 
-    /* normalise Big - force all digits < 2^big::BASEBITS */
+    /// Normalise Big - force all digits < 2^big::BASEBITS
     pub fn norm(&mut self) {
         let mut carry = 0 as Chunk;
         for i in 0..big::DNLEN - 1 {
@@ -176,7 +179,7 @@ impl DBig {
         self.w[big::DNLEN - 1] += carry
     }
 
-    /* reduces self DBig mod a Big, and returns the Big */
+    /// Reduces self DBig mod a Big, and returns the Big
     pub fn dmod(&mut self, c: &Big) -> Big {
         let mut k = 0;
         self.norm();
@@ -210,10 +213,10 @@ impl DBig {
             k -= 1;
         }
         let r = Big::new_dcopy(self);
-        return r;
+        r
     }
 
-    /* return this/c */
+    /// return self / c
     pub fn div(&mut self, c: &Big) -> Big {
         let mut k = 0;
         let mut m = DBig::new_scopy(c);
@@ -245,10 +248,10 @@ impl DBig {
 
             k -= 1;
         }
-        return a;
+        a
     }
 
-    /* set x = x mod 2^m */
+    /// set x = x mod 2^m
     pub fn mod2m(&mut self, m: usize) {
         let wd = m / big::BASEBITS;
         let bt = m % big::BASEBITS;
@@ -259,8 +262,8 @@ impl DBig {
         }
     }
 
-    /* return number of bits */
-    pub fn nbits(&mut self) -> usize {
+    /// Return number of bits
+    pub fn nbits(&self) -> usize {
         let mut k = big::DNLEN - 1;
         let mut s = DBig::new_copy(&self);
         s.norm();
@@ -276,11 +279,11 @@ impl DBig {
             c /= 2;
             bts += 1;
         }
-        return bts;
+        bts
     }
 
-    /* Convert to Hex String */
-    pub fn to_string(&mut self) -> String {
+    /// Convert to Hex String
+    pub fn to_string(&self) -> String {
         let mut s = String::new();
         let mut len = self.nbits();
 
@@ -296,6 +299,6 @@ impl DBig {
             b.shr(i * 4);
             s = s + &format!("{:X}", b.w[0] & 15);
         }
-        return s;
+        s
     }
 }
diff --git a/src/ecdh.rs b/src/ecdh.rs
index 1df8446..12aa34e 100644
--- a/src/ecdh.rs
+++ b/src/ecdh.rs
@@ -17,19 +17,18 @@ specific language governing permissions and limitations
 under the License.
 */
 
+use super::big;
+use super::big::Big;
 use super::ecp;
 use super::ecp::ECP;
-use super::big::Big;
 use super::rom;
-use super::big;
 
-use rand::RAND;
+use aes;
+use aes::AES;
 use hash256::HASH256;
 use hash384::HASH384;
 use hash512::HASH512;
-use aes;
-use aes::AES;
-
+use rand::RAND;
 
 pub const INVALID_PUBLIC_KEY: isize = -2;
 pub const ERROR: isize = -3;
@@ -52,6 +51,7 @@ fn inttobytes(n: usize, b: &mut [u8]) {
     }
 }
 
+/// Hash to curve function using Hash and Test on SHA256, 384 or 512
 fn hashit(sha: usize, a: &[u8], n: usize, b: Option<&[u8]>, pad: usize, w: &mut [u8]) {
     let mut r: [u8; 64] = [0; 64];
     if sha == SHA256 {
@@ -117,11 +117,11 @@ fn hashit(sha: usize, a: &[u8], n: usize, b: Option<&[u8]>, pad: usize, w: &mut
     }
 }
 
-/* Key Derivation Functions */
-/* Input octet Z */
-/* Output key of length olen */
+// Key Derivation Function 1
+// Input octet Z
+// Output key of length olen
 pub fn kdf1(sha: usize, z: &[u8], olen: usize, k: &mut [u8]) {
-    /* NOTE: the parameter olen is the length of the output K in bytes */
+    // NOTE: the parameter olen is the length of the output K in bytes
     let hlen = sha;
     let mut lk = 0;
 
@@ -147,8 +147,11 @@ pub fn kdf1(sha: usize, z: &[u8], olen: usize, k: &mut [u8]) {
     }
 }
 
+// Key Derivation Function 2
+// Input octet Z
+// Output key of length olen
 pub fn kdf2(sha: usize, z: &[u8], p: Option<&[u8]>, olen: usize, k: &mut [u8]) {
-    /* NOTE: the parameter olen is the length of the output K in bytes */
+    // NOTE: the parameter olen is the length of the output K in bytes
     let hlen = sha;
     let mut lk = 0;
 
@@ -157,7 +160,7 @@ pub fn kdf2(sha: usize, z: &[u8], p: Option<&[u8]>, olen: usize, k: &mut [u8]) {
         cthreshold += 1
     }
 
-    for counter in 1..cthreshold + 1 {
+    for counter in 1..=cthreshold {
         let mut b: [u8; 64] = [0; 64];
         hashit(sha, z, counter, p, 0, &mut b);
         if lk + hlen > olen {
@@ -174,9 +177,9 @@ pub fn kdf2(sha: usize, z: &[u8], p: Option<&[u8]>, olen: usize, k: &mut [u8]) {
     }
 }
 
-/* Password based Key Derivation Function */
-/* Input password p, salt s, and repeat count */
-/* Output key of length olen */
+/// Password based Key Derivation Function
+/// Input password p, salt s, and repeat count
+/// Output key of length olen
 pub fn pbkdf2(sha: usize, pass: &[u8], salt: &[u8], rep: usize, olen: usize, k: &mut [u8]) {
     let mut d = olen / sha;
     if olen % sha != 0 {
@@ -205,7 +208,7 @@ pub fn pbkdf2(sha: usize, pass: &[u8], salt: &[u8], rep: usize, olen: usize, k:
             u[j] = f[j]
         }
         for _ in 1..rep {
-            hmac(sha, &mut u, pass, sha, &mut ku);
+            hmac(sha, &u, pass, sha, &mut ku);
             for k in 0..sha {
                 u[k] = ku[k];
                 f[k] ^= u[k]
@@ -220,7 +223,7 @@ pub fn pbkdf2(sha: usize, pass: &[u8], salt: &[u8], rep: usize, olen: usize, k:
     }
 }
 
-/* Calculate HMAC of m using key k. HMAC is tag of length olen (which is length of tag) */
+/// Calculate HMAC of m using key k. HMAC is tag of length olen (which is length of tag)
 pub fn hmac(sha: usize, m: &[u8], k: &[u8], olen: usize, tag: &mut [u8]) -> bool {
     /* Input is from an octet m        *
     	* olen is requested output length in bytes. k is the key  *
@@ -255,17 +258,17 @@ pub fn hmac(sha: usize, m: &[u8], k: &[u8], olen: usize, tag: &mut [u8]) -> bool
     for i in 0..lb {
         k0[i] ^= 0x36
     }
-    hashit(sha, &mut k0[0..lb], 0, Some(m), 0, &mut b);
+    hashit(sha, &k0[0..lb], 0, Some(m), 0, &mut b);
 
     for i in 0..lb {
         k0[i] ^= 0x6a
     }
-    hashit(sha, &mut k0[0..lb], 0, Some(&b[0..sha]), olen, tag);
+    hashit(sha, &k0[0..lb], 0, Some(&b[0..sha]), olen, tag);
 
     return true;
 }
 
-/* AES encryption/decryption. Encrypt byte array m using key k and returns ciphertext c */
+/// AES encryption/decryption. Encrypt byte array m using key k and returns ciphertext c
 pub fn cbc_iv0_encrypt(k: &[u8], m: &[u8]) -> Vec<u8> {
     /* AES CBC encryption, with Null IV and key K */
     /* Input is from an octet string m, output is to an octet string c */
@@ -314,10 +317,10 @@ pub fn cbc_iv0_encrypt(k: &[u8], m: &[u8]) -> Vec<u8> {
         c.push(buff[j]);
     }
     a.end();
-    return c;
+    c
 }
 
-/* returns plaintext if all consistent, else returns null string */
+/// Returns plaintext if all consistent, else returns null string
 pub fn cbc_iv0_decrypt(k: &[u8], c: &[u8]) -> Option<Vec<u8>> {
     /* padding is removed */
     let mut a = AES::new();
@@ -382,14 +385,14 @@ pub fn cbc_iv0_decrypt(k: &[u8], c: &[u8]) -> Option<Vec<u8>> {
     if bad {
         return None;
     }
-    return Some(m);
+    Some(m)
 }
 
-/* Calculate a public/private EC GF(p) key pair w,s where W=s.G mod EC(p),
- * where s is the secret key and W is the public key
- * and G is fixed generator.
- * If RNG is NULL then the private key is provided externally in s
- * otherwise it is generated randomly internally */
+/// Calculate a public/private EC GF(p) key pair w,s where W=s.G mod EC(p),
+/// where s is the secret key and W is the public key
+/// and G is fixed generator.
+/// If RNG is NULL then the private key is provided externally in s
+/// otherwise it is generated randomly internally
 #[allow(non_snake_case)]
 pub fn key_pair_generate(rng: Option<&mut RAND>, s: &mut [u8], w: &mut [u8]) -> isize {
     let res = 0;
@@ -407,14 +410,14 @@ pub fn key_pair_generate(rng: Option<&mut RAND>, s: &mut [u8], w: &mut [u8]) ->
 
     sc.tobytes(s);
 
-    let WP = G.mul(&mut sc);
+    let WP = G.mul(&sc);
 
     WP.tobytes(w, false); // To use point compression on public keys, change to true
 
-    return res;
+    res
 }
 
-/* validate public key */
+/// Validate public key
 #[allow(non_snake_case)]
 pub fn public_key_validate(w: &[u8]) -> isize {
     let mut WP = ECP::frombytes(w);
@@ -440,16 +443,16 @@ pub fn public_key_validate(w: &[u8]) -> isize {
         }
 
         if !k.isunity() {
-            WP = WP.mul(&mut k)
+            WP = WP.mul(&k)
         }
         if WP.is_infinity() {
             res = INVALID_PUBLIC_KEY
         }
     }
-    return res;
+    res
 }
 
-/* IEEE-1363 Diffie-Hellman online calculation Z=S.WD */
+/// IEEE-1363 Diffie-Hellman online calculation Z=S.WD
 #[allow(non_snake_case)]
 pub fn ecpsvdp_dh(s: &[u8], wd: &[u8], z: &mut [u8]) -> isize {
     let mut res = 0;
@@ -465,7 +468,7 @@ pub fn ecpsvdp_dh(s: &[u8], wd: &[u8], z: &mut [u8]) -> isize {
     if res == 0 {
         let r = Big::new_ints(&rom::CURVE_ORDER);
         sc.rmod(&r);
-        W = W.mul(&mut sc);
+        W = W.mul(&sc);
         if W.is_infinity() {
             res = ERROR;
         } else {
@@ -475,10 +478,10 @@ pub fn ecpsvdp_dh(s: &[u8], wd: &[u8], z: &mut [u8]) -> isize {
             }
         }
     }
-    return res;
+    res
 }
 
-/* IEEE ECDSA Signature, C and D are signature on F using private key S */
+/// IEEE ECDSA Signature, C and D are signature on F using private key S
 #[allow(non_snake_case)]
 pub fn ecpsp_dsa(
     sha: usize,
@@ -497,7 +500,7 @@ pub fn ecpsp_dsa(
 
     let r = Big::new_ints(&rom::CURVE_ORDER);
 
-    let mut sc = Big::frombytes(s); /* s or &s? */
+    let sc = Big::frombytes(s); /* s or &s? */
     let fb = Big::frombytes(&b);
 
     let mut cb = Big::new();
@@ -507,10 +510,10 @@ pub fn ecpsp_dsa(
 
     while db.iszilch() {
         let mut u = Big::randomnum(&r, rng);
-        let mut w = Big::randomnum(&r, rng); /* side channel masking */
+        let w = Big::randomnum(&r, rng); /* side channel masking */
 
         V.copy(&G);
-        V = V.mul(&mut u);
+        V = V.mul(&u);
         let vx = V.getx();
         cb.copy(&vx);
         cb.rmod(&r);
@@ -518,17 +521,17 @@ pub fn ecpsp_dsa(
             continue;
         }
 
-        tb.copy(&Big::modmul(&mut u, &mut w, &r));
+        tb.copy(&Big::modmul(&u, &w, &r));
         u.copy(&tb);
 
         u.invmodp(&r);
-        db.copy(&Big::modmul(&mut sc, &mut cb, &r));
+        db.copy(&Big::modmul(&sc, &cb, &r));
         db.add(&fb);
 
-        tb.copy(&Big::modmul(&mut db, &mut w, &r));
+        tb.copy(&Big::modmul(&db, &w, &r));
         db.copy(&tb);
 
-        tb.copy(&Big::modmul(&mut u, &mut db, &r));
+        tb.copy(&Big::modmul(&u, &db, &r));
         db.copy(&tb);
     }
 
@@ -540,10 +543,10 @@ pub fn ecpsp_dsa(
     for i in 0..EFS {
         d[i] = t[i]
     }
-    return 0;
+    0
 }
 
-/* IEEE1363 ECDSA Signature Verification. Signature C and D on F is verified using public key W */
+/// IEEE1363 ECDSA Signature Verification. Signature C and D on F is verified using public key W
 #[allow(non_snake_case)]
 pub fn ecpvp_dsa(sha: usize, w: &[u8], f: &[u8], c: &[u8], d: &[u8]) -> isize {
     let mut res = 0;
@@ -552,11 +555,11 @@ pub fn ecpvp_dsa(sha: usize, w: &[u8], f: &[u8], c: &[u8], d: &[u8]) -> isize {
 
     hashit(sha, f, 0, None, big::MODBYTES as usize, &mut b);
 
-    let mut G = ECP::generator();
+    let G = ECP::generator();
 
     let r = Big::new_ints(&rom::CURVE_ORDER);
 
-    let mut cb = Big::frombytes(c); /* c or &c ? */
+    let cb = Big::frombytes(c); /* c or &c ? */
     let mut db = Big::frombytes(d); /* d or &d ? */
     let mut fb = Big::frombytes(&b);
     let mut tb = Big::new();
@@ -567,9 +570,9 @@ pub fn ecpvp_dsa(sha: usize, w: &[u8], f: &[u8], c: &[u8], d: &[u8]) -> isize {
 
     if res == 0 {
         db.invmodp(&r);
-        tb.copy(&Big::modmul(&mut fb, &mut db, &r));
+        tb.copy(&Big::modmul(&fb, &db, &r));
         fb.copy(&tb);
-        let h2 = Big::modmul(&mut cb, &mut db, &r);
+        let h2 = Big::modmul(&cb, &db, &r);
 
         let WP = ECP::frombytes(&w);
         if WP.is_infinity() {
@@ -578,7 +581,7 @@ pub fn ecpvp_dsa(sha: usize, w: &[u8], f: &[u8], c: &[u8], d: &[u8]) -> isize {
             let mut P = ECP::new();
             P.copy(&WP);
 
-            P = P.mul2(&h2, &mut G, &fb);
+            P = P.mul2(&h2, &G, &fb);
 
             if P.is_infinity() {
                 res = INVALID;
@@ -593,10 +596,10 @@ pub fn ecpvp_dsa(sha: usize, w: &[u8], f: &[u8], c: &[u8], d: &[u8]) -> isize {
         }
     }
 
-    return res;
+    res
 }
 
-/* IEEE1363 ECIES encryption. Encryption of plaintext M uses public key W and produces ciphertext V,C,T */
+/// IEEE1363 ECIES encryption. Encryption of plaintext M uses public key W and produces ciphertext V,C,T
 #[allow(non_snake_case)]
 pub fn ecies_encrypt(
     sha: usize,
@@ -622,7 +625,7 @@ pub fn ecies_encrypt(
         return None;
     }
 
-    for i in 0..2 * EFS + 1 {
+    for i in 0..=2 * EFS {
         vz[i] = v[i]
     }
     for i in 0..EFS {
@@ -656,10 +659,10 @@ pub fn ecies_encrypt(
         c.pop();
     }
 
-    return Some(c);
+    Some(c)
 }
 
-/* constant time n-byte compare */
+/// constant time n-byte compare
 fn ncomp(t1: &[u8], t2: &[u8], n: usize) -> bool {
     let mut res = 0;
     for i in 0..n {
@@ -668,10 +671,10 @@ fn ncomp(t1: &[u8], t2: &[u8], n: usize) -> bool {
     if res == 0 {
         return true;
     }
-    return false;
+    false
 }
 
-/* IEEE1363 ECIES decryption. Decryption of ciphertext V,C,T using private key U outputs plaintext M */
+/// IEEE1363 ECIES decryption. Decryption of ciphertext V,C,T using private key U outputs plaintext M
 #[allow(non_snake_case)]
 pub fn ecies_decrypt(
     sha: usize,
@@ -740,5 +743,5 @@ pub fn ecies_decrypt(
         return None;
     }
 
-    return m;
+    m
 }
diff --git a/src/ecp.rs b/src/ecp.rs
index 0e27f32..b779e2d 100644
--- a/src/ecp.rs
+++ b/src/ecp.rs
@@ -17,15 +17,15 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use super::fp::FP;
-use super::big::Big;
 use super::big;
+use super::big::Big;
+use super::fp::FP;
 use super::rom;
 
-pub use super::rom::{CURVETYPE, CURVE_PAIRING_TYPE, SEXTIC_TWIST, SIGN_OF_X, HASH_TYPE, AESKEY};
-pub use types::CurveType;
-use std::str::SplitWhitespace;
+pub use super::rom::{AESKEY, CURVETYPE, CURVE_PAIRING_TYPE, HASH_TYPE, SEXTIC_TWIST, SIGN_OF_X};
 use std::fmt;
+use std::str::SplitWhitespace;
+pub use types::CurveType;
 
 #[derive(Copy, Clone)]
 pub struct ECP {
@@ -41,15 +41,15 @@ impl PartialEq for ECP {
 }
 
 impl fmt::Display for ECP {
-	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-		write!(f, "ECP: [ {}, {}, {} ]", self.x, self.y, self.z)
-	}
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "ECP: [ {}, {}, {} ]", self.x, self.y, self.z)
+    }
 }
 
 impl fmt::Debug for ECP {
-	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-		write!(f, "ECP: [ {}, {}, {} ]", self.x, self.y, self.z)
-	}
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "ECP: [ {}, {}, {} ]", self.x, self.y, self.z)
+    }
 }
 
 #[allow(non_snake_case)]
@@ -64,7 +64,7 @@ impl ECP {
 
     pub fn new() -> ECP {
         let mut E = ECP::pnew();
-        if CURVETYPE == CurveType::EDWARDS {
+        if CURVETYPE == CurveType::Edwards {
             E.z.one();
         }
         return E;
@@ -78,14 +78,14 @@ impl ECP {
         E.z.one();
         E.x.norm();
         let mut rhs = ECP::rhs(&E.x);
-        if CURVETYPE == CurveType::MONTGOMERY {
+        if CURVETYPE == CurveType::Montgomery {
             if rhs.jacobi() != 1 {
                 E.inf();
             }
         } else {
             let mut y2 = FP::new_copy(&E.y);
             y2.sqr();
-            if !y2.equals(&mut rhs) {
+            if !y2.equals(&rhs) {
                 E.inf();
             }
         }
@@ -122,7 +122,7 @@ impl ECP {
         E.z.one();
         let mut rhs = ECP::rhs(&E.x);
         if rhs.jacobi() == 1 {
-            if CURVETYPE != CurveType::MONTGOMERY {
+            if CURVETYPE != CurveType::Montgomery {
                 E.y.copy(&rhs.sqrt())
             }
         } else {
@@ -134,10 +134,10 @@ impl ECP {
     /* set this=O */
     pub fn inf(&mut self) {
         self.x.zero();
-        if CURVETYPE != CurveType::MONTGOMERY {
+        if CURVETYPE != CurveType::Montgomery {
             self.y.one();
         }
-        if CURVETYPE != CurveType::EDWARDS {
+        if CURVETYPE != CurveType::Edwards {
             self.z.zero();
         } else {
             self.z.one()
@@ -149,7 +149,7 @@ impl ECP {
         let mut r = FP::new_copy(x);
         r.sqr();
 
-        if CURVETYPE == CurveType::WEIERSTRASS {
+        if CURVETYPE == CurveType::Weierstrass {
             // x^3+Ax+B
             let b = FP::new_big(&Big::new_ints(&rom::CURVE_B));
             r.mul(x);
@@ -162,7 +162,7 @@ impl ECP {
             }
             r.add(&b);
         }
-        if CURVETYPE == CurveType::EDWARDS {
+        if CURVETYPE == CurveType::Edwards {
             // (Ax^2-1)/(Bx^2-1)
             let mut b = FP::new_big(&Big::new_ints(&rom::CURVE_B));
             let one = FP::new_int(1);
@@ -177,7 +177,7 @@ impl ECP {
             b.inverse();
             r.mul(&b);
         }
-        if CURVETYPE == CurveType::MONTGOMERY {
+        if CURVETYPE == CurveType::Montgomery {
             // x^3+Ax^2+x
             let mut x3 = FP::new();
             x3.copy(&r);
@@ -193,16 +193,16 @@ impl ECP {
     /* test for O point-at-infinity */
     pub fn is_infinity(&self) -> bool {
         match CURVETYPE {
-            CurveType::EDWARDS=> self.x.iszilch() && self.y.equals(&self.z),
-            CurveType::WEIERSTRASS => self.x.iszilch() && self.z.iszilch(),
-            CurveType::MONTGOMERY => self.z.iszilch(),
+            CurveType::Edwards => self.x.iszilch() && self.y.equals(&self.z),
+            CurveType::Weierstrass => self.x.iszilch() && self.z.iszilch(),
+            CurveType::Montgomery => self.z.iszilch(),
         }
     }
 
     /* Conditional swap of P and Q dependant on d */
     pub fn cswap(&mut self, Q: &mut ECP, d: isize) {
         self.x.cswap(&mut Q.x, d);
-        if CURVETYPE != CurveType::MONTGOMERY {
+        if CURVETYPE != CurveType::Montgomery {
             self.y.cswap(&mut Q.y, d)
         }
         self.z.cswap(&mut Q.z, d);
@@ -211,7 +211,7 @@ impl ECP {
     /* Conditional move of Q to P dependant on d */
     pub fn cmove(&mut self, Q: &ECP, d: isize) {
         self.x.cmove(&Q.x, d);
-        if CURVETYPE != CurveType::MONTGOMERY {
+        if CURVETYPE != CurveType::Montgomery {
             self.y.cmove(&Q.y, d)
         }
         self.z.cmove(&Q.z, d);
@@ -227,7 +227,7 @@ impl ECP {
     /* this=P */
     pub fn copy(&mut self, P: &ECP) {
         self.x.copy(&P.x);
-        if CURVETYPE != CurveType::MONTGOMERY {
+        if CURVETYPE != CurveType::Montgomery {
             self.y.copy(&P.y)
         }
         self.z.copy(&P.z);
@@ -235,11 +235,11 @@ impl ECP {
 
     /* this=-this */
     pub fn neg(&mut self) {
-        if CURVETYPE == CurveType::WEIERSTRASS {
+        if CURVETYPE == CurveType::Weierstrass {
             self.y.neg();
             self.y.norm();
         }
-        if CURVETYPE == CurveType::EDWARDS {
+        if CURVETYPE == CurveType::Edwards {
             self.x.neg();
             self.x.norm();
         }
@@ -281,15 +281,15 @@ impl ECP {
         a.mul(&Q.z);
         b.copy(&Q.x);
         b.mul(&self.z);
-        if !a.equals(&mut b) {
+        if !a.equals(&b) {
             return false;
         }
-        if CURVETYPE != CurveType::MONTGOMERY {
+        if CURVETYPE != CurveType::Montgomery {
             a.copy(&self.y);
             a.mul(&Q.z);
             b.copy(&Q.y);
             b.mul(&self.z);
-            if !a.equals(&mut b) {
+            if !a.equals(&b) {
                 return false;
             }
         }
@@ -301,15 +301,15 @@ impl ECP {
         if self.is_infinity() {
             return;
         }
-        let mut one = FP::new_int(1);
-        if self.z.equals(&mut one) {
+        let one = FP::new_int(1);
+        if self.z.equals(&one) {
             return;
         }
         self.z.inverse();
 
         self.x.mul(&self.z);
         self.x.reduce();
-        if CURVETYPE != CurveType::MONTGOMERY {
+        if CURVETYPE != CurveType::Montgomery {
             self.y.mul(&self.z);
             self.y.reduce();
         }
@@ -368,7 +368,7 @@ impl ECP {
             b[i + 1] = t[i]
         }
 
-        if CURVETYPE == CurveType::MONTGOMERY {
+        if CURVETYPE == CurveType::Montgomery {
             b[0] = 0x06;
             return;
         }
@@ -403,7 +403,7 @@ impl ECP {
             return ECP::new();
         }
 
-        if CURVETYPE == CurveType::MONTGOMERY {
+        if CURVETYPE == CurveType::Montgomery {
             return ECP::new_big(&px);
         }
 
@@ -432,7 +432,7 @@ impl ECP {
         if W.is_infinity() {
             return String::from("infinity");
         }
-        if CURVETYPE == CurveType::MONTGOMERY {
+        if CURVETYPE == CurveType::Montgomery {
             return format!("({})", W.x.redc().tostring());
         } else {
             return format!("({},{})", W.x.redc().tostring(), W.y.redc().tostring());
@@ -440,7 +440,12 @@ impl ECP {
     }
 
     pub fn to_hex(&self) -> String {
-        format!("{} {} {}", self.x.to_hex(), self.y.to_hex(), self.z.to_hex())
+        format!(
+            "{} {} {}",
+            self.x.to_hex(),
+            self.y.to_hex(),
+            self.z.to_hex()
+        )
     }
 
     pub fn from_hex_iter(iter: &mut SplitWhitespace) -> ECP {
@@ -458,7 +463,7 @@ impl ECP {
 
     /* this*=2 */
     pub fn dbl(&mut self) {
-        if CURVETYPE == CurveType::WEIERSTRASS {
+        if CURVETYPE == CurveType::Weierstrass {
             if rom::CURVE_A == 0 {
                 let mut t0 = FP::new_copy(&self.y);
                 t0.sqr();
@@ -590,7 +595,7 @@ impl ECP {
                 self.z.norm();
             }
         }
-        if CURVETYPE == CurveType::EDWARDS {
+        if CURVETYPE == CurveType::Edwards {
             let mut c = FP::new_copy(&self.x);
             let mut d = FP::new_copy(&self.y);
             let mut h = FP::new_copy(&self.z);
@@ -619,7 +624,7 @@ impl ECP {
             self.y.mul(&c);
             self.z.mul(&j);
         }
-        if CURVETYPE == CurveType::MONTGOMERY {
+        if CURVETYPE == CurveType::Montgomery {
             let mut a = FP::new_copy(&self.x);
             let mut b = FP::new_copy(&self.x);
             let mut aa = FP::new();
@@ -654,7 +659,7 @@ impl ECP {
 
     /* self+=Q */
     pub fn add(&mut self, Q: &ECP) {
-        if CURVETYPE == CurveType::WEIERSTRASS {
+        if CURVETYPE == CurveType::Weierstrass {
             if rom::CURVE_A == 0 {
                 let b = 3 * rom::CURVE_B_I;
                 let mut t0 = FP::new_copy(&self.x);
@@ -847,7 +852,7 @@ impl ECP {
                 self.z.norm();
             }
         }
-        if CURVETYPE == CurveType::EDWARDS {
+        if CURVETYPE == CurveType::Edwards {
             let bb = FP::new_big(&Big::new_ints(&rom::CURVE_B));
             let mut a = FP::new_copy(&self.z);
             let mut b = FP::new();
@@ -959,7 +964,7 @@ impl ECP {
 
     /* constant time multiply by small integer of length bts - use ladder */
     pub fn pinmul(&self, e: i32, bts: i32) -> ECP {
-        if CURVETYPE == CurveType::MONTGOMERY {
+        if CURVETYPE == CurveType::Montgomery {
             return self.mul(&mut Big::new_int(e as isize));
         } else {
             let mut P = ECP::new();
@@ -970,7 +975,7 @@ impl ECP {
             for i in (0..bts).rev() {
                 let b = ((e >> i) & 1) as isize;
                 P.copy(&R1);
-                P.add(&mut R0);
+                P.add(&R0);
                 R0.cswap(&mut R1, b);
                 R1.copy(&P);
                 R0.dbl();
@@ -989,7 +994,7 @@ impl ECP {
             return ECP::new();
         }
         let mut P = ECP::new();
-        if CURVETYPE == CurveType::MONTGOMERY {
+        if CURVETYPE == CurveType::Montgomery {
             /* use Ladder */
             let mut D = ECP::new();
             let mut R0 = ECP::new();
@@ -1040,7 +1045,7 @@ impl ECP {
             for i in 1..8 {
                 C.copy(&W[i - 1]);
                 W[i].copy(&C);
-                W[i].add(&mut Q);
+                W[i].add(&Q);
             }
 
             // make exponent odd - add 2P if even, P if odd
@@ -1074,9 +1079,9 @@ impl ECP {
                 P.dbl();
                 P.dbl();
                 P.dbl();
-                P.add(&mut Q);
+                P.add(&Q);
             }
-            P.sub(&mut C); /* apply correction */
+            P.sub(&C); /* apply correction */
         }
         P.affine();
         return P;
@@ -1119,24 +1124,24 @@ impl ECP {
         S.dbl();
         C.copy(&W[1]);
         W[0].copy(&C);
-        W[0].sub(&mut S); // copy to C is stupid Rust thing..
+        W[0].sub(&S); // copy to C is stupid Rust thing..
         C.copy(&W[2]);
         W[3].copy(&C);
-        W[3].add(&mut S);
+        W[3].add(&S);
         T.copy(&self);
         T.dbl();
         C.copy(&W[1]);
         W[5].copy(&C);
-        W[5].add(&mut T);
+        W[5].add(&T);
         C.copy(&W[2]);
         W[6].copy(&C);
-        W[6].add(&mut T);
+        W[6].add(&T);
         C.copy(&W[5]);
         W[4].copy(&C);
-        W[4].sub(&mut S);
+        W[4].sub(&S);
         C.copy(&W[6]);
         W[7].copy(&C);
-        W[7].add(&mut S);
+        W[7].add(&S);
 
         // if multiplier is odd, add 2, else add 1 to multiplier, and add 2P or P to correction
 
@@ -1160,7 +1165,7 @@ impl ECP {
         mt.norm();
         tf.cmove(&mt, s);
         S.cmove(&Q, ns);
-        C.add(&mut S);
+        C.add(&S);
 
         mt.copy(&te);
         mt.add(&tf);
@@ -1186,9 +1191,9 @@ impl ECP {
             T.selector(&W, w[i] as i32);
             S.dbl();
             S.dbl();
-            S.add(&mut T);
+            S.add(&T);
         }
-        S.sub(&mut C); /* apply correction */
+        S.sub(&C); /* apply correction */
         S.affine();
         return S;
     }
@@ -1218,14 +1223,14 @@ impl ECP {
     // Map a given byte slice to a point on the curve. The byte slice should be atleast the size of the modulus
     #[allow(non_snake_case)]
     pub fn mapit(h: &[u8]) -> ECP {
-        let mut q = Big::new_ints(&rom::MODULUS);
+        let q = Big::new_ints(&rom::MODULUS);
         let mut x = Big::frombytes(h);
-        x.rmod(&mut q);
+        x.rmod(&q);
         let mut P: ECP;
 
         loop {
             loop {
-                if CURVETYPE != CurveType::MONTGOMERY {
+                if CURVETYPE != CurveType::Montgomery {
                     P = ECP::new_bigint(&x, 0);
                 } else {
                     P = ECP::new_big(&x);
@@ -1250,7 +1255,7 @@ impl ECP {
 
         let gx = Big::new_ints(&rom::CURVE_GX);
 
-        if CURVETYPE != CurveType::MONTGOMERY {
+        if CURVETYPE != CurveType::Montgomery {
             let gy = Big::new_ints(&rom::CURVE_GY);
             G = ECP::new_bigs(&gx, &gy);
         } else {
diff --git a/src/ecp2.rs b/src/ecp2.rs
index c705863..b0892e4 100644
--- a/src/ecp2.rs
+++ b/src/ecp2.rs
@@ -17,14 +17,14 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use super::rom;
 use super::big;
+use super::big::Big;
 use super::ecp;
 use super::fp2::FP2;
-use super::big::Big;
-use types::{SexticTwist, CurvePairingType, SignOfX};
-use std::str::SplitWhitespace;
+use super::rom;
 use std::fmt;
+use std::str::SplitWhitespace;
+use types::{CurvePairingType, SexticTwist, SignOfX};
 
 #[derive(Copy, Clone)]
 pub struct ECP2 {
@@ -34,21 +34,21 @@ pub struct ECP2 {
 }
 
 impl PartialEq for ECP2 {
-	fn eq(&self, other: &ECP2) -> bool {
-		self.equals(other)
-	}
+    fn eq(&self, other: &ECP2) -> bool {
+        self.equals(other)
+    }
 }
 
 impl fmt::Display for ECP2 {
-	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-		write!(f, "ECP2: [ {}, {}, {} ]", self.x, self.y, self.z)
-	}
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "ECP2: [ {}, {}, {} ]", self.x, self.y, self.z)
+    }
 }
 
 impl fmt::Debug for ECP2 {
-	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-		write!(f, "ECP2: [ {}, {}, {} ]", self.x, self.y, self.z)
-	}
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "ECP2: [ {}, {}, {} ]", self.x, self.y, self.z)
+    }
 }
 
 #[allow(non_snake_case)]
@@ -69,10 +69,10 @@ impl ECP2 {
         E.z.one();
         E.x.norm();
 
-        let mut rhs = ECP2::rhs(&E.x);
+        let rhs = ECP2::rhs(&E.x);
         let mut y2 = FP2::new_copy(&E.y);
         y2.sqr();
-        if !y2.equals(&mut rhs) {
+        if !y2.equals(&rhs) {
             E.inf();
         }
         return E;
@@ -163,14 +163,14 @@ impl ECP2 {
 
         a.mul(&Q.z);
         b.mul(&self.z);
-        if !a.equals(&mut b) {
+        if !a.equals(&b) {
             return false;
         }
         a.copy(&self.y);
         a.mul(&Q.z);
         b.copy(&Q.y);
         b.mul(&self.z);
-        if !a.equals(&mut b) {
+        if !a.equals(&b) {
             return false;
         }
 
@@ -182,8 +182,8 @@ impl ECP2 {
         if self.is_infinity() {
             return;
         }
-        let mut one = FP2::new_int(1);
-        if self.z.equals(&mut one) {
+        let one = FP2::new_int(1);
+        if self.z.equals(&one) {
             return;
         }
         self.z.inverse();
@@ -291,14 +291,19 @@ impl ECP2 {
     }
 
     pub fn to_hex(&self) -> String {
-        format!("{} {} {}", self.x.to_hex(), self.y.to_hex(), self.z.to_hex())
+        format!(
+            "{} {} {}",
+            self.x.to_hex(),
+            self.y.to_hex(),
+            self.z.to_hex()
+        )
     }
 
     pub fn from_hex_iter(iter: &mut SplitWhitespace) -> ECP2 {
         ECP2 {
             x: FP2::from_hex_iter(iter),
             y: FP2::from_hex_iter(iter),
-            z: FP2::from_hex_iter(iter)
+            z: FP2::from_hex_iter(iter),
         }
     }
 
@@ -312,10 +317,10 @@ impl ECP2 {
         let mut r = FP2::new_copy(x);
         r.sqr();
         let mut b = FP2::new_big(&Big::new_ints(&rom::CURVE_B));
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             b.div_ip();
         }
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             b.norm();
             b.mul_ip();
             b.norm();
@@ -331,14 +336,14 @@ impl ECP2 {
     /* self+=self */
     pub fn dbl(&mut self) -> isize {
         let mut iy = FP2::new_copy(&self.y);
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             iy.mul_ip();
             iy.norm();
         }
 
         let mut t0 = FP2::new_copy(&self.y); //***** Change
         t0.sqr();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t0.mul_ip();
         }
         let mut t1 = FP2::new_copy(&iy);
@@ -354,7 +359,7 @@ impl ECP2 {
         self.z.norm();
 
         t2.imul(3 * rom::CURVE_B_I);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             t2.mul_ip();
             t2.norm();
         }
@@ -410,7 +415,7 @@ impl ECP2 {
 
         t3.sub(&t4);
         t3.norm();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t3.mul_ip();
             t3.norm(); //t3=(X1+Y1)(X2+Y2)-(X1.X2+Y1.Y2) = X1.Y2+X2.Y1
         }
@@ -427,7 +432,7 @@ impl ECP2 {
 
         t4.sub(&x3);
         t4.norm();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t4.mul_ip();
             t4.norm(); //t4=(Y1+Z1)(Y2+Z2) - (Y1.Y2+Z1.Z2) = Y1.Z2+Y2.Z1
         }
@@ -443,7 +448,7 @@ impl ECP2 {
         y3.rsub(&x3);
         y3.norm(); // y3=(X1+Z1)(X2+Z2) - (X1.X2+Z1.Z2) = X1.Z2+X2.Z1
 
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t0.mul_ip();
             t0.norm(); // x.Q.x
             t1.mul_ip();
@@ -454,7 +459,7 @@ impl ECP2 {
         t0.add(&x3);
         t0.norm();
         t2.imul(b);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             t2.mul_ip();
             t2.norm();
         }
@@ -464,7 +469,7 @@ impl ECP2 {
         t1.sub(&t2);
         t1.norm();
         y3.imul(b);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             y3.mul_ip();
             y3.norm();
         }
@@ -548,7 +553,7 @@ impl ECP2 {
         for i in 1..8 {
             C.copy(&W[i - 1]);
             W[i].copy(&C);
-            W[i].add(&mut Q);
+            W[i].add(&Q);
         }
 
         /* make exponent odd - add 2P if even, P if odd */
@@ -582,9 +587,9 @@ impl ECP2 {
             P.dbl();
             P.dbl();
             P.dbl();
-            P.add(&mut Q);
+            P.add(&Q);
         }
-        P.sub(&mut C);
+        P.sub(&C);
         P.affine();
         return P;
     }
@@ -629,24 +634,24 @@ impl ECP2 {
         T[0].copy(&Q[0]);
         W.copy(&T[0]);
         T[1].copy(&W);
-        T[1].add(&mut Q[1]); // Q[0]+Q[1]
+        T[1].add(&Q[1]); // Q[0]+Q[1]
         T[2].copy(&W);
-        T[2].add(&mut Q[2]);
+        T[2].add(&Q[2]);
         W.copy(&T[1]); // Q[0]+Q[2]
         T[3].copy(&W);
-        T[3].add(&mut Q[2]);
+        T[3].add(&Q[2]);
         W.copy(&T[0]); // Q[0]+Q[1]+Q[2]
         T[4].copy(&W);
-        T[4].add(&mut Q[3]);
+        T[4].add(&Q[3]);
         W.copy(&T[1]); // Q[0]+Q[3]
         T[5].copy(&W);
-        T[5].add(&mut Q[3]);
+        T[5].add(&Q[3]);
         W.copy(&T[2]); // Q[0]+Q[1]+Q[3]
         T[6].copy(&W);
-        T[6].add(&mut Q[3]);
+        T[6].add(&Q[3]);
         W.copy(&T[3]); // Q[0]+Q[2]+Q[3]
         T[7].copy(&W);
-        T[7].add(&mut Q[3]); // Q[0]+Q[1]+Q[2]+Q[3]
+        T[7].add(&Q[3]); // Q[0]+Q[1]+Q[2]+Q[3]
 
         // Make it odd
         let pb = 1 - t[0].parity();
@@ -688,12 +693,12 @@ impl ECP2 {
         for i in (0..nb - 1).rev() {
             P.dbl();
             W.selector(&T, (2 * w[i] + s[i]) as i32);
-            P.add(&mut W);
+            P.add(&W);
         }
 
         // apply correction
         W.copy(&P);
-        W.sub(&mut Q[0]);
+        W.sub(&Q[0]);
         P.cmove(&W, pb);
         P.affine();
 
@@ -702,9 +707,9 @@ impl ECP2 {
 
     #[allow(non_snake_case)]
     pub fn mapit(h: &[u8]) -> ECP2 {
-        let mut q = Big::new_ints(&rom::MODULUS);
+        let q = Big::new_ints(&rom::MODULUS);
         let mut x = Big::frombytes(h);
-        x.rmod(&mut q);
+        x.rmod(&q);
         let mut Q: ECP2;
         let one = Big::new_int(1);
 
@@ -718,15 +723,15 @@ impl ECP2 {
             x.norm();
         }
         let mut X = FP2::new_bigs(&Big::new_ints(&rom::FRA), &Big::new_ints(&rom::FRB));
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             X.inverse();
             X.norm();
         }
         x = Big::new_ints(&rom::CURVE_BNX);
 
-        if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
-            let mut T = Q.mul(&mut x);
-            if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
+            let mut T = Q.mul(&x);
+            if ecp::SIGN_OF_X == SignOfX::NegativeX {
                 T.neg();
             }
             let mut K = ECP2::new();
@@ -744,11 +749,11 @@ impl ECP2 {
             T.frob(&X);
             Q.add(&T);
         }
-        if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BLS {
-            let mut xQ = Q.mul(&mut x);
-            let mut x2Q = xQ.mul(&mut x);
+        if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bls {
+            let mut xQ = Q.mul(&x);
+            let mut x2Q = xQ.mul(&x);
 
-            if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+            if ecp::SIGN_OF_X == SignOfX::NegativeX {
                 xQ.neg();
             }
             x2Q.sub(&xQ);
diff --git a/src/ecp4.rs b/src/ecp4.rs
index b29b05d..e0dc5dc 100644
--- a/src/ecp4.rs
+++ b/src/ecp4.rs
@@ -17,12 +17,12 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use super::rom;
 use super::big;
+use super::big::Big;
 use super::ecp;
 use super::fp2::FP2;
 use super::fp4::FP4;
-use super::big::Big;
+use super::rom;
 use types::{SexticTwist, SignOfX};
 //use std::str::SplitWhitespace;
 
@@ -328,10 +328,10 @@ impl ECP4 {
         let mut r = FP4::new_copy(x);
         r.sqr();
         let mut b = FP4::new_fp2(&FP2::new_big(&Big::new_ints(&rom::CURVE_B)));
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             b.div_i();
         }
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             b.times_i();
         }
 
@@ -345,13 +345,13 @@ impl ECP4 {
     /* self+=self */
     pub fn dbl(&mut self) -> isize {
         let mut iy = FP4::new_copy(&self.y);
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             iy.times_i(); //iy.norm();
         }
 
         let mut t0 = FP4::new_copy(&self.y);
         t0.sqr();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t0.times_i();
         }
         let mut t1 = FP4::new_copy(&iy);
@@ -367,7 +367,7 @@ impl ECP4 {
         self.z.norm();
 
         t2.imul(3 * rom::CURVE_B_I);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             t2.times_i();
         }
         let mut x3 = FP4::new_copy(&t2);
@@ -422,7 +422,7 @@ impl ECP4 {
 
         t3.sub(&t4);
         t3.norm();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t3.times_i(); //t3=(X1+Y1)(X2+Y2)-(X1.X2+Y1.Y2) = X1.Y2+X2.Y1
         }
         t4.copy(&self.y);
@@ -438,7 +438,7 @@ impl ECP4 {
 
         t4.sub(&x3);
         t4.norm();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t4.times_i(); //t4=(Y1+Z1)(Y2+Z2) - (Y1.Y2+Z1.Z2) = Y1.Z2+Y2.Z1
         }
         x3.copy(&self.x);
@@ -453,7 +453,7 @@ impl ECP4 {
         y3.rsub(&x3);
         y3.norm(); // y3=(X1+Z1)(X2+Z2) - (X1.X2+Z1.Z2) = X1.Z2+X2.Z1
 
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t0.times_i(); // x.Q.x
             t1.times_i(); // y.Q.y
         }
@@ -462,7 +462,7 @@ impl ECP4 {
         t0.add(&x3);
         t0.norm();
         t2.imul(b);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             t2.times_i();
         }
         let mut z3 = FP4::new_copy(&t1);
@@ -471,7 +471,7 @@ impl ECP4 {
         t1.sub(&t2);
         t1.norm();
         y3.imul(b);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             y3.times_i();
         }
         x3.copy(&y3);
@@ -517,7 +517,7 @@ impl ECP4 {
         f1.sqr();
         f2.mul(&f1);
         f1.copy(&f);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             f1.mul_ip();
             f1.inverse();
             f0.copy(&f1);
@@ -835,7 +835,7 @@ impl ECP4 {
         let mut x3Q = x2Q.mul(&mut x);
         let mut x4Q = x3Q.mul(&mut x);
 
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             xQ.neg();
             x3Q.neg();
         }
diff --git a/src/ecp8.rs b/src/ecp8.rs
index 18c8a30..3998c2c 100644
--- a/src/ecp8.rs
+++ b/src/ecp8.rs
@@ -17,13 +17,13 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use super::rom;
 use super::big;
+use super::big::Big;
 use super::ecp;
 use super::fp2::FP2;
 use super::fp4::FP4;
 use super::fp8::FP8;
-use super::big::Big;
+use super::rom;
 use types::{SexticTwist, SignOfX};
 
 pub struct ECP8 {
@@ -414,10 +414,10 @@ impl ECP8 {
         let mut r = FP8::new_copy(x);
         r.sqr();
         let mut b = FP8::new_fp4(&FP4::new_fp2(&FP2::new_big(&Big::new_ints(&rom::CURVE_B))));
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             b.div_i();
         }
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             b.times_i();
         }
 
@@ -431,13 +431,13 @@ impl ECP8 {
     /* self+=self */
     pub fn dbl(&mut self) -> isize {
         let mut iy = FP8::new_copy(&self.y);
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             iy.times_i(); //iy.norm();
         }
 
         let mut t0 = FP8::new_copy(&self.y);
         t0.sqr();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t0.times_i();
         }
         let mut t1 = FP8::new_copy(&iy);
@@ -453,7 +453,7 @@ impl ECP8 {
         self.z.norm();
 
         t2.imul(3 * rom::CURVE_B_I);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             t2.times_i();
         }
         let mut x3 = FP8::new_copy(&t2);
@@ -508,7 +508,7 @@ impl ECP8 {
 
         t3.sub(&t4);
         t3.norm();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t3.times_i(); //t3=(X1+Y1)(X2+Y2)-(X1.X2+Y1.Y2) = X1.Y2+X2.Y1
         }
         t4.copy(&self.y);
@@ -524,7 +524,7 @@ impl ECP8 {
 
         t4.sub(&x3);
         t4.norm();
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t4.times_i(); //t4=(Y1+Z1)(Y2+Z2) - (Y1.Y2+Z1.Z2) = Y1.Z2+Y2.Z1
         }
         x3.copy(&self.x);
@@ -539,7 +539,7 @@ impl ECP8 {
         y3.rsub(&x3);
         y3.norm(); // y3=(X1+Z1)(X2+Z2) - (X1.X2+Z1.Z2) = X1.Z2+X2.Z1
 
-        if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
             t0.times_i(); // x.Q.x
             t1.times_i(); // y.Q.y
         }
@@ -548,7 +548,7 @@ impl ECP8 {
         t0.add(&x3);
         t0.norm();
         t2.imul(b);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             t2.times_i();
         }
         let mut z3 = FP8::new_copy(&t1);
@@ -557,7 +557,7 @@ impl ECP8 {
         t1.sub(&t2);
         t1.norm();
         y3.imul(b);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             y3.times_i();
         }
         x3.copy(&y3);
@@ -607,7 +607,7 @@ impl ECP8 {
         f2.norm();
 
         f1.copy(&f);
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             f1.mul_ip();
             f1.inverse();
             f0.copy(&f1);
@@ -626,18 +626,18 @@ impl ECP8 {
         for _i in 0..n {
             self.x.frob(&f[2]);
             self.x.qmul(&f[0]);
-            if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+            if ecp::SEXTIC_TWIST == SexticTwist::MType {
                 self.x.div_i2();
             }
-            if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+            if ecp::SEXTIC_TWIST == SexticTwist::DType {
                 self.x.times_i2();
             }
             self.y.frob(&f[2]);
             self.y.qmul(&f[1]);
-            if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+            if ecp::SEXTIC_TWIST == SexticTwist::MType {
                 self.y.div_i();
             }
-            if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+            if ecp::SEXTIC_TWIST == SexticTwist::DType {
                 self.y.times_i2();
                 self.y.times_i2();
                 self.y.times_i();
@@ -914,7 +914,7 @@ impl ECP8 {
         // Number of bits
         mt.zero();
         for i in 0..16 {
-	    t[i].norm();
+            t[i].norm();
             mt.or(&t[i]);
         }
 
@@ -1105,7 +1105,7 @@ impl ECP8 {
         let mut x7Q = x6Q.mul(&mut x);
         let mut x8Q = x7Q.mul(&mut x);
 
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             xQ.neg();
             x3Q.neg();
             x5Q.neg();
diff --git a/src/ff.rs b/src/ff.rs
index 5855d88..54e7a32 100644
--- a/src/ff.rs
+++ b/src/ff.rs
@@ -17,10 +17,10 @@ specific language governing permissions and limitations
 under the License.
 */
 
+use super::super::arch::Chunk;
 use super::big;
-use super::dbig::DBig;
 use super::big::Big;
-use super::super::arch::Chunk;
+use super::dbig::DBig;
 use rand::RAND;
 
 use super::super::arch::DChunk;
diff --git a/src/fp.rs b/src/fp.rs
index 205d8d6..72b7390 100644
--- a/src/fp.rs
+++ b/src/fp.rs
@@ -17,14 +17,14 @@ specific language governing permissions and limitations
 under the License.
 */
 
+use super::super::arch;
+use super::super::arch::Chunk;
 use super::big;
 use super::big::Big;
 use super::dbig::DBig;
 use super::rom;
-use super::super::arch::Chunk;
-use super::super::arch;
-use types::ModType;
 use std::str::FromStr;
+use types::ModType;
 
 #[derive(Copy, Clone)]
 pub struct FP {
@@ -50,17 +50,17 @@ impl fmt::Debug for FP {
     }
 }
 
-pub use super::rom::{MODBITS, MOD8, MODTYPE, SH};
-use std::str::SplitWhitespace;
+pub use super::rom::{MOD8, MODBITS, MODTYPE, SH};
 use std::fmt;
+use std::str::SplitWhitespace;
 
-pub const FEXCESS:i32 = (((1 as i32)<<SH)-1);
-pub const OMASK:Chunk = (-1)<<(MODBITS%big::BASEBITS);
-pub const TBITS:usize=MODBITS%big::BASEBITS; // Number of active bits in top word
-pub const TMASK:Chunk=(1<<TBITS)-1;
+pub const FEXCESS: i32 = (((1 as i32) << SH) - 1);
+pub const OMASK: Chunk = (-1) << (MODBITS % big::BASEBITS);
+pub const TBITS: usize = MODBITS % big::BASEBITS; // Number of active bits in top word
+pub const TMASK: Chunk = (1 << TBITS) - 1;
 
 impl FP {
-    /* Constructors */
+    // Constructors
     pub fn new() -> FP {
         FP {
             x: Big::new(),
@@ -90,9 +90,9 @@ impl FP {
     }
 
     pub fn nres(&mut self) {
-        if MODTYPE != ModType::PSEUDO_MERSENNE && MODTYPE != ModType::GENERALISED_MERSENNE {
-            let r=Big::new_ints(&rom::R2MODP);
-            let mut d=Big::mul(&(self.x),&r);
+        if MODTYPE != ModType::PseudoMersenne && MODTYPE != ModType::GeneralisedMersenne {
+            let r = Big::new_ints(&rom::R2MODP);
+            let mut d = Big::mul(&(self.x), &r);
             self.x.copy(&FP::modulo(&mut d));
             self.xes = 2;
         } else {
@@ -104,8 +104,8 @@ impl FP {
         let xes = i32::from_str(iter.next().unwrap()).unwrap();
         let x = iter.next().unwrap();
         FP {
-            x: Big::from_hex(x.to_string()),
-            xes
+            x: Big::fromstring(x.to_string()),
+            xes,
         }
     }
 
@@ -115,28 +115,26 @@ impl FP {
     }
 
     pub fn to_hex(&self) -> String {
-        let mut x = self.x;
-        let big = x.to_hex();
+        let x = self.x;
+        let big = x.tostring();
         format!("{} {}", self.xes, big)
     }
 
-/* convert back to regular form */
+    // convert back to regular form
     pub fn redc(&mut self) -> Big {
-        if MODTYPE != ModType::PSEUDO_MERSENNE && MODTYPE != ModType::GENERALISED_MERSENNE {
-            let mut d=DBig::new_scopy(&(self.x));
+        if MODTYPE != ModType::PseudoMersenne && MODTYPE != ModType::GeneralisedMersenne {
+            let mut d = DBig::new_scopy(&(self.x));
             return FP::modulo(&mut d);
-        } else {
-            let r = Big::new_copy(&(self.x));
-            return r;
         }
+        Big::new_copy(&(self.x))
     }
 
-    /* reduce a DBig to a Big using the appropriate form of the modulus */
-    /* dd */
+    // reduce a DBig to a Big using the appropriate form of the modulus
+    // dd
     pub fn modulo(d: &mut DBig) -> Big {
-        if MODTYPE==ModType::PSEUDO_MERSENNE {
-            let mut b=Big::new();
-            let mut t=d.split(MODBITS);
+        if MODTYPE == ModType::PseudoMersenne {
+            let mut b = Big::new();
+            let mut t = d.split(MODBITS);
             b.dcopy(&d);
             let v = t.pmul(rom::MCONST as isize);
 
@@ -150,7 +148,7 @@ impl FP {
             return t;
         }
 
-        if MODTYPE==ModType::MONTGOMERY_FRIENDLY {
+        if MODTYPE == ModType::MontgomeryFriendly {
             let mut b = Big::new();
             for i in 0..big::NLEN {
                 let x = d.w[i];
@@ -169,7 +167,7 @@ impl FP {
             return b;
         }
 
-        if MODTYPE == ModType::GENERALISED_MERSENNE {
+        if MODTYPE == ModType::GeneralisedMersenne {
             // GoldiLocks Only
             let mut b = Big::new();
             let t = d.split(MODBITS);
@@ -195,20 +193,19 @@ impl FP {
             b.norm();
             return b;
         }
-        if MODTYPE == ModType::NOT_SPECIAL {
+        if MODTYPE == ModType::NotSpecial {
             let m = Big::new_ints(&rom::MODULUS);
             return Big::monty(&m, rom::MCONST, d);
         }
-        return Big::new();
+        Big::new()
     }
 
-    /* convert to string */
+    // convert to string
     pub fn tostring(&mut self) -> String {
-        let s = self.redc().tostring();
-        return s;
+        self.redc().tostring()
     }
 
-    /* reduce this mod Modulus */
+    // reduce this mod Modulus
     pub fn reduce(&mut self) {
         let mut m = Big::new_ints(&rom::MODULUS);
         let mut r = Big::new_copy(&m);
@@ -229,48 +226,48 @@ impl FP {
         while sb > 0 {
             let sr = Big::ssn(&mut r, &self.x, &mut m);
             self.x.cmove(&r, 1 - sr);
-            sb = sb - 1;
+            sb -= 1;
         }
 
         self.xes = 1;
     }
 
-    /* test this=0? */
+    // test this=0?
     pub fn iszilch(&self) -> bool {
         let mut a = FP::new_copy(self);
         a.reduce();
-        return a.x.iszilch();
+        a.x.iszilch()
     }
 
-    /* copy from FP b */
+    // copy from FP b
     pub fn copy(&mut self, b: &FP) {
         self.x.copy(&(b.x));
         self.xes = b.xes;
     }
 
-    /* copy from Big b */
+    // copy from Big b
     pub fn bcopy(&mut self, b: &Big) {
         self.x.copy(&b);
         self.nres();
     }
 
-    /* set this=0 */
+    // set this=0
     pub fn zero(&mut self) {
         self.x.zero();
         self.xes = 1;
     }
 
-    /* set this=1 */
+    // set this=1
     pub fn one(&mut self) {
         self.x.one();
         self.nres()
     }
 
-    /* normalise this */
+    // normalise this
     pub fn norm(&mut self) {
         self.x.norm();
     }
-    /* swap FPs depending on d */
+    // swap FPs depending on d
     pub fn cswap(&mut self, b: &mut FP, d: isize) {
         self.x.cswap(&mut (b.x), d);
         let mut c = d as i32;
@@ -280,16 +277,16 @@ impl FP {
         b.xes ^= t;
     }
 
-    /* copy FPs depending on d */
+    // copy FPs depending on d
     pub fn cmove(&mut self, b: &FP, d: isize) {
         self.x.cmove(&(b.x), d);
         let c = d as i32;
         self.xes ^= (self.xes ^ b.xes) & (-c);
     }
 
-    /* this*=b mod Modulus */
+    // this*=b mod Modulus
     pub fn mul(&mut self, b: &FP) {
-        if (self.xes as i64) * (b.xes as i64) > FEXCESS as i64 {
+        if i64::from(self.xes) * i64::from(b.xes) > i64::from(FEXCESS) {
             self.reduce()
         }
 
@@ -308,8 +305,7 @@ impl FP {
 
         v = v - ((v >> 1) & 0x55555555);
         v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
-        let r = ((((v + (v >> 4)) & 0xF0F0F0F).wrapping_mul(0x1010101)) >> 24) as usize;
-        return r;
+        ((((v + (v >> 4)) & 0xF0F0F0F).wrapping_mul(0x1010101)) >> 24) as usize
     }
 
     // find approximation to quotient of a/m
@@ -330,7 +326,7 @@ impl FP {
         }
     }
 
-    /* this = -this mod Modulus */
+    // this = -this mod Modulus
     pub fn neg(&mut self) {
         let mut p = Big::new_ints(&rom::MODULUS);
         let sb = FP::logb2((self.xes - 1) as u32);
@@ -343,7 +339,7 @@ impl FP {
         }
     }
 
-    /* this*=c mod Modulus, where c is a small int */
+    // this*=c mod Modulus, where c is a small int
     pub fn imul(&mut self, c: isize) {
         let mut cc = c;
         let mut s = false;
@@ -352,7 +348,7 @@ impl FP {
             s = true;
         }
 
-        if MODTYPE == ModType::PSEUDO_MERSENNE || MODTYPE == ModType::GENERALISED_MERSENNE {
+        if MODTYPE == ModType::PseudoMersenne || MODTYPE == ModType::GeneralisedMersenne {
             let mut d = self.x.pxmul(cc);
             self.x.copy(&FP::modulo(&mut d));
             self.xes = 2
@@ -372,9 +368,9 @@ impl FP {
         }
     }
 
-    /* self*=self mod Modulus */
+    // self*=self mod Modulus
     pub fn sqr(&mut self) {
-        if (self.xes as i64) * (self.xes as i64) > FEXCESS as i64 {
+        if i64::from(self.xes) * i64::from(self.xes) > i64::from(FEXCESS) {
             self.reduce()
         }
 
@@ -383,7 +379,7 @@ impl FP {
         self.xes = 2
     }
 
-    /* self+=b */
+    // self+=b
     pub fn add(&mut self, b: &FP) {
         self.x.add(&(b.x));
         self.xes += b.xes;
@@ -392,7 +388,7 @@ impl FP {
         }
     }
 
-    /* self+=self */
+    // self+=self
     pub fn dbl(&mut self) {
         self.x.dbl();
         self.xes += self.xes;
@@ -401,20 +397,20 @@ impl FP {
         }
     }
 
-    /* self-=b */
+    // self-=b
     pub fn sub(&mut self, b: &FP) {
         let mut n = FP::new_copy(b);
         n.neg();
         self.add(&n);
     }
 
-    /* self=b-self */
+    // self=b-self
     pub fn rsub(&mut self, b: &FP) {
         self.neg();
         self.add(&b);
     }
 
-    /* self/=2 mod Modulus */
+    // self/=2 mod Modulus
     pub fn div2(&mut self) {
         if self.x.parity() == 0 {
             self.x.fshr(1);
@@ -479,7 +475,7 @@ impl FP {
         let mut n = MODBITS as isize;
         let c: isize;
 
-        if MODTYPE == ModType::GENERALISED_MERSENNE {
+        if MODTYPE == ModType::GeneralisedMersenne {
             // Goldilocks ONLY
             n /= 2;
         }
@@ -564,21 +560,21 @@ impl FP {
             }
             r.mul(&key);
         }
-        if MODTYPE == ModType::GENERALISED_MERSENNE {
+        if MODTYPE == ModType::GeneralisedMersenne {
             // Goldilocks ONLY
             key.copy(&r);
             r.sqr();
             r.mul(&self);
-            for _ in 0..n + 1 {
+            for _ in 0..=n {
                 r.sqr();
             }
             r.mul(&key);
         }
-        return r;
+        r
     }
-    /* self=1/self mod Modulus */
+    // self=1/self mod Modulus
     pub fn inverse(&mut self) {
-        if MODTYPE == ModType::PSEUDO_MERSENNE || MODTYPE == ModType::GENERALISED_MERSENNE {
+        if MODTYPE == ModType::PseudoMersenne || MODTYPE == ModType::GeneralisedMersenne {
             let mut y = self.fpow();
             if MOD8 == 5 {
                 let mut t = FP::new_copy(self);
@@ -600,7 +596,7 @@ impl FP {
         }
     }
 
-    /* return TRUE if self==a */
+    // return TRUE if self==a
     pub fn equals(&self, a: &FP) -> bool {
         let mut f = FP::new_copy(self);
         let mut s = FP::new_copy(a);
@@ -612,7 +608,7 @@ impl FP {
         return false;
     }
 
-    /* return self^e mod Modulus */
+    // return self^e mod Modulus
     pub fn pow(&mut self, e: &mut Big) -> FP {
         let mut tb: [FP; 16] = [
             FP::new(),
@@ -668,7 +664,7 @@ impl FP {
         return r;
     }
 
-    /* return sqrt(this) mod Modulus */
+    // return sqrt(this) mod Modulus
     pub fn sqrt(&mut self) -> FP {
         self.reduce();
 
@@ -676,7 +672,7 @@ impl FP {
             let v: FP;
             let mut i = FP::new_copy(self);
             i.x.shl(1);
-            if MODTYPE == ModType::PSEUDO_MERSENNE || MODTYPE == ModType::GENERALISED_MERSENNE {
+            if MODTYPE == ModType::PseudoMersenne || MODTYPE == ModType::GeneralisedMersenne {
                 v = i.fpow();
             } else {
                 let mut p = Big::new_ints(&rom::MODULUS);
@@ -695,7 +691,7 @@ impl FP {
             return r;
         } else {
             let mut r: FP;
-            if MODTYPE == ModType::PSEUDO_MERSENNE || MODTYPE == ModType::GENERALISED_MERSENNE {
+            if MODTYPE == ModType::PseudoMersenne || MODTYPE == ModType::GeneralisedMersenne {
                 r = self.fpow();
                 r.mul(self);
             } else {
@@ -708,10 +704,10 @@ impl FP {
             return r;
         }
     }
-    /* return jacobi symbol (this/Modulus) */
+    // return jacobi symbol (this/Modulus)
     pub fn jacobi(&mut self) -> isize {
-        let mut p = Big::new_ints(&rom::MODULUS);
+        let p = Big::new_ints(&rom::MODULUS);
         let mut w = self.redc();
-        return w.jacobi(&mut p);
+        return w.jacobi(&p);
     }
 }
diff --git a/src/fp12.rs b/src/fp12.rs
index 311fe87..0ba5fc1 100644
--- a/src/fp12.rs
+++ b/src/fp12.rs
@@ -18,19 +18,19 @@ under the License.
 */
 
 use super::big;
+use super::big::Big;
+use super::ecp;
 use super::fp2::FP2;
 use super::fp4::FP4;
-use super::big::Big;
 use super::rom;
-use types::SexticTwist;
 use std::str::SplitWhitespace;
-use super::ecp;
+use types::SexticTwist;
 
-pub const ZERO: usize=0;
-pub const ONE: usize=1;
-pub const SPARSER: usize=2;
-pub const SPARSE: usize=3;
-pub const DENSE: usize=4;
+pub const ZERO: usize = 0;
+pub const ONE: usize = 1;
+pub const SPARSER: usize = 2;
+pub const SPARSE: usize = 3;
+pub const DENSE: usize = 4;
 
 #[derive(Copy, Clone)]
 pub struct FP12 {
@@ -41,9 +41,9 @@ pub struct FP12 {
 }
 
 impl PartialEq for FP12 {
-	fn eq(&self, other: &FP12) -> bool {
-		self.equals(other)
-	}
+    fn eq(&self, other: &FP12) -> bool {
+        self.equals(other)
+    }
 }
 
 impl FP12 {
@@ -52,12 +52,12 @@ impl FP12 {
             a: FP4::new(),
             b: FP4::new(),
             c: FP4::new(),
-	    stype: ZERO,
+            stype: ZERO,
         }
     }
 
-    pub fn settype(&mut self,t: usize)  {
-	self.stype = t;
+    pub fn settype(&mut self, t: usize) {
+        self.stype = t;
     }
 
     pub fn gettype(&self) -> usize {
@@ -69,11 +69,11 @@ impl FP12 {
         f.a.copy(&FP4::new_int(a));
         f.b.zero();
         f.c.zero();
-	if a == 1 {
-	    f.stype=ONE;
-	} else {
-	    f.stype=SPARSER;
-	}
+        if a == 1 {
+            f.stype = ONE;
+        } else {
+            f.stype = SPARSER;
+        }
         return f;
     }
 
@@ -82,7 +82,7 @@ impl FP12 {
         f.a.copy(&x.a);
         f.b.copy(&x.b);
         f.c.copy(&x.c);
-	f.stype=x.stype;
+        f.stype = x.stype;
         return f;
     }
 
@@ -91,7 +91,7 @@ impl FP12 {
         g.a.copy(d);
         g.b.copy(e);
         g.c.copy(f);
-	g.stype=DENSE;
+        g.stype = DENSE;
         return g;
     }
 
@@ -100,7 +100,7 @@ impl FP12 {
         g.a.copy(d);
         g.b.zero();
         g.c.zero();
-	g.stype=SPARSER;
+        g.stype = SPARSER;
         return g;
     }
 
@@ -129,9 +129,9 @@ impl FP12 {
         self.a.cmove(&g.a, d);
         self.b.cmove(&g.b, d);
         self.c.cmove(&g.c, d);
-	let mut u=d as usize;
-	u=!(u-1);
-	self.stype^=(self.stype^g.stype)&u;
+        let mut u = d as usize;
+        u = !(u - 1);
+        self.stype ^= (self.stype ^ g.stype) & u;
     }
 
     /* return 1 if b==c, no branching */
@@ -175,20 +175,20 @@ impl FP12 {
 
     pub fn geta(&mut self) -> FP4 {
         return self.a;
-//        let f = FP4::new_copy(&self.a);
-//        return f;
+        //        let f = FP4::new_copy(&self.a);
+        //        return f;
     }
 
     pub fn getb(&mut self) -> FP4 {
         return self.b;
-//        let f = FP4::new_copy(&self.b);
-//        return f;
+        //        let f = FP4::new_copy(&self.b);
+        //        return f;
     }
 
     pub fn getc(&mut self) -> FP4 {
         return self.c;
-//        let f = FP4::new_copy(&self.c);
-//        return f;
+        //        let f = FP4::new_copy(&self.c);
+        //        return f;
     }
 
     /* copy self=x */
@@ -196,7 +196,7 @@ impl FP12 {
         self.a.copy(&x.a);
         self.b.copy(&x.b);
         self.c.copy(&x.c);
-	self.stype=x.stype;
+        self.stype = x.stype;
     }
 
     /* set self=1 */
@@ -204,7 +204,7 @@ impl FP12 {
         self.a.one();
         self.b.zero();
         self.c.zero();
-	self.stype=ONE;
+        self.stype = ONE;
     }
 
     /* set self=0 */
@@ -212,7 +212,7 @@ impl FP12 {
         self.a.zero();
         self.b.zero();
         self.c.zero();
-	self.stype=ZERO;
+        self.stype = ZERO;
     }
 
     /* this=conj(this) */
@@ -260,13 +260,13 @@ impl FP12 {
         self.c.dbl();
         self.b.add(&b);
         self.c.add(&c);
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.reduce();
     }
 
     /* Chung-Hasan SQR2 method from http://cacr.uwaterloo.ca/techreports/2006/cacr2006-24.pdf */
     pub fn sqr(&mut self) {
-        if self.stype==ONE {
+        if self.stype == ONE {
             return;
         }
 
@@ -304,10 +304,10 @@ impl FP12 {
         self.b.copy(&c);
         self.b.add(&d);
         self.c.add(&a);
-        if self.stype==SPARSER {
-            self.stype=SPARSE;
+        if self.stype == SPARSER {
+            self.stype = SPARSE;
         } else {
-            self.stype=DENSE;
+            self.stype = DENSE;
         }
         self.norm();
     }
@@ -316,7 +316,7 @@ impl FP12 {
     pub fn mul(&mut self, y: &FP12) {
         let mut z0 = FP4::new_copy(&self.a);
         let mut z1 = FP4::new();
-        let mut z2 = FP4::new_copy(&mut self.b);
+        let mut z2 = FP4::new_copy(&self.b);
         let mut z3 = FP4::new();
         let mut t0 = FP4::new_copy(&self.a);
         let mut t1 = FP4::new_copy(&y.a);
@@ -379,100 +379,112 @@ impl FP12 {
         z3.times_i();
         self.a.copy(&z0);
         self.a.add(&z3);
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.norm();
     }
 
-
-/* FP12 full multiplication w=w*y */
-/* Supports sparse multiplicands */
-/* Usually w is denser than y */
+    /* FP12 full multiplication w=w*y */
+    /* Supports sparse multiplicands */
+    /* Usually w is denser than y */
     pub fn ssmul(&mut self, y: &FP12) {
-        if self.stype==ONE {
+        if self.stype == ONE {
             self.copy(&y);
             return;
         }
-        if y.stype==ONE {
+        if y.stype == ONE {
             return;
         }
-        if y.stype>=SPARSE {
-            let mut z0=FP4::new_copy(&self.a);
-            let mut z1=FP4::new_int(0);
-            let mut z2=FP4::new_int(0);
-            let mut z3=FP4::new_int(0);
+        if y.stype >= SPARSE {
+            let mut z0 = FP4::new_copy(&self.a);
+            let mut z1 = FP4::new_int(0);
+            let mut z2 = FP4::new_int(0);
+            let mut z3 = FP4::new_int(0);
             z0.mul(&y.a);
 
-            if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE {
-                if y.stype==SPARSE || self.stype==SPARSE {
-
-                    let mut ga=FP2::new_int(0);
-		    let mut gb=FP2::new_int(0);
+            if ecp::SEXTIC_TWIST == SexticTwist::MType {
+                if y.stype == SPARSE || self.stype == SPARSE {
+                    let mut ga = FP2::new_int(0);
+                    let mut gb = FP2::new_int(0);
 
                     gb.copy(&self.b.getb());
                     gb.mul(&y.b.getb());
                     ga.zero();
-                    if y.stype!=SPARSE {
+                    if y.stype != SPARSE {
                         ga.copy(&self.b.getb());
                         ga.mul(&y.b.geta());
                     }
-                    if self.stype!=SPARSE {
+                    if self.stype != SPARSE {
                         ga.copy(&self.b.geta());
                         ga.mul(&y.b.getb());
                     }
-		    z2.set_fp2s(&ga,&gb);
+                    z2.set_fp2s(&ga, &gb);
                     z2.times_i();
                 } else {
                     z2.copy(&self.b);
                     z2.mul(&y.b);
                 }
             } else {
-               z2.copy(&self.b);
-               z2.mul(&y.b);
+                z2.copy(&self.b);
+                z2.mul(&y.b);
             }
-            let mut t0=FP4::new_copy(&self.a);
-            let mut t1=FP4::new_copy(&y.a);
-            t0.add(&self.b); t0.norm();
-            t1.add(&y.b); t1.norm();
-
-            z1.copy(&t0); z1.mul(&t1);
-            t0.copy(&self.b); t0.add(&self.c); t0.norm();
-            t1.copy(&y.b); t1.add(&y.c); t1.norm();
-
-            z3.copy(&t0); z3.mul(&t1);
-
-            t0.copy(&z0); t0.neg();
-            t1.copy(&z2); t1.neg();
+            let mut t0 = FP4::new_copy(&self.a);
+            let mut t1 = FP4::new_copy(&y.a);
+            t0.add(&self.b);
+            t0.norm();
+            t1.add(&y.b);
+            t1.norm();
+
+            z1.copy(&t0);
+            z1.mul(&t1);
+            t0.copy(&self.b);
+            t0.add(&self.c);
+            t0.norm();
+            t1.copy(&y.b);
+            t1.add(&y.c);
+            t1.norm();
+
+            z3.copy(&t0);
+            z3.mul(&t1);
+
+            t0.copy(&z0);
+            t0.neg();
+            t1.copy(&z2);
+            t1.neg();
 
             z1.add(&t0);
-            self.b.copy(&z1); self.b.add(&t1);
+            self.b.copy(&z1);
+            self.b.add(&t1);
 
             z3.add(&t1);
             z2.add(&t0);
 
-            t0.copy(&self.a); t0.add(&self.c); t0.norm();
-            t1.copy(&y.a); t1.add(&y.c); t1.norm();
+            t0.copy(&self.a);
+            t0.add(&self.c);
+            t0.norm();
+            t1.copy(&y.a);
+            t1.add(&y.c);
+            t1.norm();
 
             t0.mul(&t1);
             z2.add(&t0);
 
-            if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE {
-                if y.stype==SPARSE || self.stype==SPARSE {
-
-                    let mut ga=FP2::new_int(0);
-		    let mut gb=FP2::new_int(0);
+            if ecp::SEXTIC_TWIST == SexticTwist::DType {
+                if y.stype == SPARSE || self.stype == SPARSE {
+                    let mut ga = FP2::new_int(0);
+                    let mut gb = FP2::new_int(0);
 
                     ga.copy(&self.c.geta());
                     ga.mul(&y.c.geta());
                     gb.zero();
-                    if y.stype!=SPARSE {
+                    if y.stype != SPARSE {
                         gb.copy(&self.c.geta());
                         gb.mul(&y.c.getb());
                     }
-                    if self.stype!=SPARSE {
+                    if self.stype != SPARSE {
                         gb.copy(&self.c.getb());
                         gb.mul(&y.c.geta());
                     }
-		    t0.set_fp2s(&ga,&gb);
+                    t0.set_fp2s(&ga, &gb);
                 } else {
                     t0.copy(&self.c);
                     t0.mul(&y.c);
@@ -481,26 +493,30 @@ impl FP12 {
                 t0.copy(&self.c);
                 t0.mul(&y.c);
             }
-            t1.copy(&t0); t1.neg();
+            t1.copy(&t0);
+            t1.neg();
 
-            self.c.copy(&z2); self.c.add(&t1);
+            self.c.copy(&z2);
+            self.c.add(&t1);
             z3.add(&t1);
             t0.times_i();
             self.b.add(&t0);
             z3.norm();
             z3.times_i();
-            self.a.copy(&z0); self.a.add(&z3);
+            self.a.copy(&z0);
+            self.a.add(&z3);
         } else {
-            if self.stype==SPARSER {
+            if self.stype == SPARSER {
                 self.smul(&y);
                 return;
             }
-            if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { // dense by sparser - 13m
-                let mut z0=FP4::new_copy(&self.a);
-                let mut z2=FP4::new_copy(&self.b);
-                let mut z3=FP4::new_copy(&self.b);
-                let mut t0=FP4::new_int(0);
-                let mut t1=FP4::new_copy(&y.a);
+            if ecp::SEXTIC_TWIST == SexticTwist::DType {
+                // dense by sparser - 13m
+                let mut z0 = FP4::new_copy(&self.a);
+                let mut z2 = FP4::new_copy(&self.b);
+                let mut z3 = FP4::new_copy(&self.b);
+                let mut t0 = FP4::new_int(0);
+                let mut t1 = FP4::new_copy(&y.a);
 
                 z0.mul(&y.a);
                 z2.pmul(&y.b.geta());
@@ -514,8 +530,10 @@ impl FP12 {
                 z3.norm();
                 z3.pmul(&y.b.geta());
 
-                t0.copy(&z0); t0.neg();
-                t1.copy(&z2); t1.neg();
+                t0.copy(&z0);
+                t0.neg();
+                t1.copy(&z2);
+                t1.neg();
 
                 self.b.add(&t0);
 
@@ -523,16 +541,19 @@ impl FP12 {
                 z3.add(&t1);
                 z2.add(&t0);
 
-                t0.copy(&self.a); t0.add(&self.c); t0.norm();
+                t0.copy(&self.a);
+                t0.add(&self.c);
+                t0.norm();
                 z3.norm();
                 t0.mul(&y.a);
-                self.c.copy(&z2); self.c.add(&t0);
+                self.c.copy(&z2);
+                self.c.add(&t0);
 
                 z3.times_i();
-                self.a.copy(&z0); self.a.add(&z3);
+                self.a.copy(&z0);
+                self.a.add(&z3);
             }
-            if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE {
-
+            if ecp::SEXTIC_TWIST == SexticTwist::MType {
                 let mut z0 = FP4::new_copy(&self.a);
                 let mut z1 = FP4::new();
                 let mut z2 = FP4::new();
@@ -541,23 +562,31 @@ impl FP12 {
                 let mut t1 = FP4::new();
 
                 z0.mul(&y.a);
-                t0.add(&self.b); t0.norm();
+                t0.add(&self.b);
+                t0.norm();
 
-                z1.copy(&t0); z1.mul(&y.a);
-                t0.copy(&self.b); t0.add(&self.c);
+                z1.copy(&t0);
+                z1.mul(&y.a);
+                t0.copy(&self.b);
+                t0.add(&self.c);
                 t0.norm();
 
                 z3.copy(&t0);
                 z3.pmul(&y.c.getb());
                 z3.times_i();
 
-                t0.copy(&z0); t0.neg();
+                t0.copy(&z0);
+                t0.neg();
                 z1.add(&t0);
                 self.b.copy(&z1);
                 z2.copy(&t0);
 
-                t0.copy(&self.a); t0.add(&self.c); t0.norm();
-                t1.copy(&y.a); t1.add(&y.c); t1.norm();
+                t0.copy(&self.a);
+                t0.add(&self.c);
+                t0.norm();
+                t1.copy(&y.a);
+                t1.add(&y.c);
+                t1.norm();
 
                 t0.mul(&t1);
                 z2.add(&t0);
@@ -565,55 +594,68 @@ impl FP12 {
 
                 t0.pmul(&y.c.getb());
                 t0.times_i();
-                t1.copy(&t0); t1.neg();
+                t1.copy(&t0);
+                t1.neg();
 
-                self.c.copy(&z2); self.c.add(&t1);
+                self.c.copy(&z2);
+                self.c.add(&t1);
                 z3.add(&t1);
                 t0.times_i();
                 self.b.add(&t0);
                 z3.norm();
                 z3.times_i();
-                self.a.copy(&z0); self.a.add(&z3);
-           }
+                self.a.copy(&z0);
+                self.a.add(&z3);
+            }
         }
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.norm();
     }
 
     /* Special case of multiplication arises from special form of ATE pairing line function */
     pub fn smul(&mut self, y: &FP12) {
-        if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE {
-            let mut w1=FP2::new_copy(&self.a.geta());
-            let mut w2=FP2::new_copy(&self.a.getb());
-            let mut w3=FP2::new_copy(&self.b.geta());
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
+            let mut w1 = FP2::new_copy(&self.a.geta());
+            let mut w2 = FP2::new_copy(&self.a.getb());
+            let mut w3 = FP2::new_copy(&self.b.geta());
 
             w1.mul(&y.a.geta());
             w2.mul(&y.a.getb());
             w3.mul(&y.b.geta());
 
-            let mut ta=FP2::new_copy(&self.a.geta());
-            let mut tb=FP2::new_copy(&y.a.geta());
-            ta.add(&self.a.getb()); ta.norm();
-            tb.add(&y.a.getb()); tb.norm();
-            let mut tc=FP2::new_copy(&ta);
+            let mut ta = FP2::new_copy(&self.a.geta());
+            let mut tb = FP2::new_copy(&y.a.geta());
+            ta.add(&self.a.getb());
+            ta.norm();
+            tb.add(&y.a.getb());
+            tb.norm();
+            let mut tc = FP2::new_copy(&ta);
             tc.mul(&tb);
-            let mut t=FP2::new_copy(&w1);
+            let mut t = FP2::new_copy(&w1);
             t.add(&w2);
             t.neg();
             tc.add(&t);
 
-            ta.copy(&self.a.geta()); ta.add(&self.b.geta()); ta.norm();
-            tb.copy(&y.a.geta()); tb.add(&y.b.geta()); tb.norm();
-            let mut td=FP2::new_copy(&ta);
+            ta.copy(&self.a.geta());
+            ta.add(&self.b.geta());
+            ta.norm();
+            tb.copy(&y.a.geta());
+            tb.add(&y.b.geta());
+            tb.norm();
+            let mut td = FP2::new_copy(&ta);
             td.mul(&tb);
             t.copy(&w1);
             t.add(&w3);
             t.neg();
             td.add(&t);
 
-            ta.copy(&self.a.getb()); ta.add(&self.b.geta()); ta.norm();
-            tb.copy(&y.a.getb()); tb.add(&y.b.geta()); tb.norm();
-            let mut te=FP2::new_copy(&ta);
+            ta.copy(&self.a.getb());
+            ta.add(&self.b.geta());
+            ta.norm();
+            tb.copy(&y.a.getb());
+            tb.add(&y.b.geta());
+            tb.norm();
+            let mut te = FP2::new_copy(&ta);
             te.mul(&tb);
             t.copy(&w2);
             t.add(&w3);
@@ -623,44 +665,54 @@ impl FP12 {
             w2.mul_ip();
             w1.add(&w2);
 
-	    self.a.set_fp2s(&w1,&tc);
-	    self.b.set_fp2s(&td,&te);
-	    self.c.set_fp2(&w3);
+            self.a.set_fp2s(&w1, &tc);
+            self.b.set_fp2s(&td, &te);
+            self.c.set_fp2(&w3);
 
             self.a.norm();
             self.b.norm();
         } else {
-            let mut w1=FP2::new_copy(&self.a.geta());
-            let mut w2=FP2::new_copy(&self.a.getb());
-            let mut w3=FP2::new_copy(&self.c.getb());
+            let mut w1 = FP2::new_copy(&self.a.geta());
+            let mut w2 = FP2::new_copy(&self.a.getb());
+            let mut w3 = FP2::new_copy(&self.c.getb());
 
             w1.mul(&y.a.geta());
             w2.mul(&y.a.getb());
             w3.mul(&y.c.getb());
 
-            let mut ta=FP2::new_copy(&self.a.geta());
-            let mut tb=FP2::new_copy(&y.a.geta());
-            ta.add(&self.a.getb()); ta.norm();
-            tb.add(&y.a.getb()); tb.norm();
-            let mut tc=FP2::new_copy(&ta);
+            let mut ta = FP2::new_copy(&self.a.geta());
+            let mut tb = FP2::new_copy(&y.a.geta());
+            ta.add(&self.a.getb());
+            ta.norm();
+            tb.add(&y.a.getb());
+            tb.norm();
+            let mut tc = FP2::new_copy(&ta);
             tc.mul(&tb);
-            let mut t=FP2::new_copy(&w1);
+            let mut t = FP2::new_copy(&w1);
             t.add(&w2);
             t.neg();
             tc.add(&t);
 
-            ta.copy(&self.a.geta()); ta.add(&self.c.getb()); ta.norm();
-            tb.copy(&y.a.geta()); tb.add(&y.c.getb()); tb.norm();
-            let mut td=FP2::new_copy(&ta);
+            ta.copy(&self.a.geta());
+            ta.add(&self.c.getb());
+            ta.norm();
+            tb.copy(&y.a.geta());
+            tb.add(&y.c.getb());
+            tb.norm();
+            let mut td = FP2::new_copy(&ta);
             td.mul(&tb);
             t.copy(&w1);
             t.add(&w3);
             t.neg();
             td.add(&t);
 
-            ta.copy(&self.a.getb()); ta.add(&self.c.getb()); ta.norm();
-            tb.copy(&y.a.getb()); tb.add(&y.c.getb()); tb.norm();
-            let mut te=FP2::new_copy(&ta);
+            ta.copy(&self.a.getb());
+            ta.add(&self.c.getb());
+            ta.norm();
+            tb.copy(&y.a.getb());
+            tb.add(&y.c.getb());
+            tb.norm();
+            let mut te = FP2::new_copy(&ta);
             te.mul(&tb);
             t.copy(&w2);
             t.add(&w3);
@@ -669,20 +721,20 @@ impl FP12 {
 
             w2.mul_ip();
             w1.add(&w2);
-	    self.a.set_fp2s(&w1,&tc);
+            self.a.set_fp2s(&w1, &tc);
 
             w3.mul_ip();
             w3.norm();
-	    self.b.set_fp2h(&w3);
+            self.b.set_fp2h(&w3);
 
             te.norm();
             te.mul_ip();
-	    self.c.set_fp2s(&te,&td);
+            self.c.set_fp2s(&te, &td);
 
             self.a.norm();
             self.c.norm();
-	}
-	self.stype=SPARSE;
+        }
+        self.stype = SPARSE;
     }
 
     /* self=1/self */
@@ -730,7 +782,7 @@ impl FP12 {
         self.b.mul(&f3);
         self.c.copy(&f2);
         self.c.mul(&f3);
-        self.stype=DENSE;
+        self.stype = DENSE;
     }
 
     /* self=self^p using Frobenius */
@@ -747,7 +799,7 @@ impl FP12 {
 
         self.b.pmul(f);
         self.c.pmul(&f2);
-        self.stype=DENSE;
+        self.stype = DENSE;
     }
 
     /* trace function */
@@ -902,7 +954,12 @@ impl FP12 {
     }
 
     pub fn to_hex(&self) -> String {
-        format!("{} {} {}", self.a.to_hex(), self.b.to_hex(), self.c.to_hex())
+        format!(
+            "{} {} {}",
+            self.a.to_hex(),
+            self.b.to_hex(),
+            self.c.to_hex()
+        )
     }
 
     pub fn from_hex_iter(iter: &mut SplitWhitespace) -> FP12 {
@@ -910,7 +967,7 @@ impl FP12 {
             a: FP4::from_hex_iter(iter),
             b: FP4::from_hex_iter(iter),
             c: FP4::from_hex_iter(iter),
-	    stype: DENSE
+            stype: DENSE,
         }
     }
 
@@ -973,15 +1030,15 @@ impl FP12 {
         m.rmod(&r);
 
         let mut a = Big::new_copy(&e);
-        a.rmod(&mut m);
+        a.rmod(&m);
 
         let mut b = Big::new_copy(&e);
-        b.div(&mut m);
+        b.div(&m);
 
         let mut c = g1.trace();
 
         if b.iszilch() {
-            c = c.xtr_pow(&mut a);
+            c = c.xtr_pow(&a);
             return c;
         }
 
@@ -993,7 +1050,7 @@ impl FP12 {
         g2.mul(&g1);
         let cpm2 = g2.trace();
 
-        c = c.xtr_pow2(&cp, &cpm1, &cpm2, &mut a, &mut b);
+        c = c.xtr_pow2(&cp, &cpm1, &cpm2, &a, &b);
 
         return c;
     }
@@ -1086,15 +1143,15 @@ impl FP12 {
                 t[j].dec((bt >> 1) as isize);
                 t[j].norm();
                 w[i] += bt * (k as i8);
-                k = 2 * k;
+                k *= 2;
             }
         }
 
         // Main loop
-        p.selector(&g, (2 * w[nb - 1] + 1) as i32);
+        p.selector(&g, i32::from(2 * w[nb - 1] + 1));
         for i in (0..nb - 1).rev() {
             p.usqr();
-            r.selector(&g, (2 * w[i] + s[i]) as i32);
+            r.selector(&g, i32::from(2 * w[i] + s[i]));
             p.mul(&r);
         }
 
diff --git a/src/fp16.rs b/src/fp16.rs
index 2c4e976..55dd573 100644
--- a/src/fp16.rs
+++ b/src/fp16.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
+use super::big::Big;
 use super::fp2::FP2;
 use super::fp8::FP8;
-use super::big::Big;
 //use std::str::SplitWhitespace;
 
 #[derive(Copy, Clone)]
@@ -64,19 +64,19 @@ impl FP16 {
         return f;
     }
 
-    pub fn set_fp8s(&mut self,c: &FP8, d: &FP8) {
+    pub fn set_fp8s(&mut self, c: &FP8, d: &FP8) {
         self.a.copy(&c);
-	self.b.copy(&d);
+        self.b.copy(&d);
     }
 
-    pub fn set_fp8(&mut self,c: &FP8) {
+    pub fn set_fp8(&mut self, c: &FP8) {
         self.a.copy(&c);
-	self.b.zero();
+        self.b.zero();
     }
 
-    pub fn set_fp8h(&mut self,c: &FP8) {
+    pub fn set_fp8h(&mut self, c: &FP8) {
         self.b.copy(&c);
-	self.a.zero();
+        self.a.zero();
     }
 
     /* reduce components mod Modulus */
@@ -119,14 +119,14 @@ impl FP16 {
 
     pub fn geta(&self) -> FP8 {
         return self.a;
-//        let f = FP8::new_copy(&self.a);
-//        return f;
+        //        let f = FP8::new_copy(&self.a);
+        //        return f;
     }
     /* extract imaginary part b */
     pub fn getb(&self) -> FP8 {
         return self.b;
-//        let f = FP8::new_copy(&self.b);
-//        return f;
+        //        let f = FP8::new_copy(&self.b);
+        //        return f;
     }
 
     /* test self=x */
@@ -359,7 +359,7 @@ impl FP16 {
             let bt = z.parity();
             z.fshr(1);
             if bt == 1 {
-                r.mul(&mut w)
+                r.mul(&w)
             };
             if z.iszilch() {
                 break;
diff --git a/src/fp2.rs b/src/fp2.rs
index 060b9de..7ed108b 100644
--- a/src/fp2.rs
+++ b/src/fp2.rs
@@ -17,13 +17,13 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use super::fp;
-use super::fp::FP;
 use super::big::Big;
 use super::dbig::DBig;
+use super::fp;
+use super::fp::FP;
 use super::rom;
-use std::str::SplitWhitespace;
 use std::fmt;
+use std::str::SplitWhitespace;
 
 #[derive(Copy, Clone)]
 pub struct FP2 {
@@ -32,21 +32,21 @@ pub struct FP2 {
 }
 
 impl PartialEq for FP2 {
-	fn eq(&self, other: &FP2) -> bool {
-		self.equals(other)
-	}
+    fn eq(&self, other: &FP2) -> bool {
+        self.equals(other)
+    }
 }
 
 impl fmt::Display for FP2 {
-	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-		write!(f, "FP2: [ {}, {} ]", self.a, self.b)
-	}
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "FP2: [ {}, {} ]", self.a, self.b)
+    }
 }
 
 impl fmt::Debug for FP2 {
-	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-		write!(f, "FP2: [ {}, {} ]", self.a, self.b)
-	}
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "FP2: [ {}, {} ]", self.a, self.b)
+    }
 }
 
 impl FP2 {
@@ -239,7 +239,9 @@ impl FP2 {
 
     /* this*=y */
     pub fn mul(&mut self, y: &FP2) {
-        if ((self.a.xes + self.b.xes) as i64) * ((y.a.xes + y.b.xes) as i64) > fp::FEXCESS as i64 {
+        if i64::from(self.a.xes + self.b.xes) * i64::from(y.a.xes + y.b.xes)
+            > i64::from(fp::FEXCESS)
+        {
             if self.a.xes > 1 {
                 self.a.reduce()
             }
@@ -331,7 +333,7 @@ impl FP2 {
     pub fn from_hex_iter(iter: &mut SplitWhitespace) -> FP2 {
         FP2 {
             a: FP::from_hex_iter(iter),
-            b: FP::from_hex_iter(iter)
+            b: FP::from_hex_iter(iter),
         }
     }
 
diff --git a/src/fp24.rs b/src/fp24.rs
index 3deb850..93c1266 100644
--- a/src/fp24.rs
+++ b/src/fp24.rs
@@ -18,20 +18,20 @@ under the License.
 */
 
 use super::big;
+use super::big::Big;
 use super::ecp;
 use super::fp2::FP2;
 use super::fp4::FP4;
 use super::fp8::FP8;
-use super::big::Big;
 use super::rom;
-use types::{SexticTwist};
+use types::SexticTwist;
 //use std::str::SplitWhitespace;
 
-pub const ZERO: usize=0;
-pub const ONE: usize=1;
-pub const SPARSER: usize=2;
-pub const SPARSE: usize=3;
-pub const DENSE: usize=4;
+pub const ZERO: usize = 0;
+pub const ONE: usize = 1;
+pub const SPARSER: usize = 2;
+pub const SPARSE: usize = 3;
+pub const DENSE: usize = 4;
 
 #[derive(Copy, Clone)]
 pub struct FP24 {
@@ -51,8 +51,8 @@ impl FP24 {
         }
     }
 
-    pub fn settype(&mut self,t: usize)  {
-	self.stype = t;
+    pub fn settype(&mut self, t: usize) {
+        self.stype = t;
     }
 
     pub fn gettype(&self) -> usize {
@@ -64,11 +64,11 @@ impl FP24 {
         f.a.copy(&FP8::new_int(a));
         f.b.zero();
         f.c.zero();
-	if a == 1 {
-	    f.stype=ONE;
-	} else {
-	    f.stype=SPARSER;
-	}
+        if a == 1 {
+            f.stype = ONE;
+        } else {
+            f.stype = SPARSER;
+        }
         return f;
     }
 
@@ -77,7 +77,7 @@ impl FP24 {
         f.a.copy(&x.a);
         f.b.copy(&x.b);
         f.c.copy(&x.c);
-	f.stype=x.stype;
+        f.stype = x.stype;
         return f;
     }
 
@@ -86,7 +86,7 @@ impl FP24 {
         g.a.copy(d);
         g.b.copy(e);
         g.c.copy(f);
-	g.stype=DENSE;
+        g.stype = DENSE;
         return g;
     }
 
@@ -95,7 +95,7 @@ impl FP24 {
         g.a.copy(d);
         g.b.zero();
         g.c.zero();
-	g.stype=SPARSER;
+        g.stype = SPARSER;
         return g;
     }
 
@@ -123,9 +123,9 @@ impl FP24 {
         self.a.cmove(&g.a, d);
         self.b.cmove(&g.b, d);
         self.c.cmove(&g.c, d);
-	let mut u=d as usize;
-	u=!(u-1);
-	self.stype^=(self.stype^g.stype)&u;
+        let mut u = d as usize;
+        u = !(u - 1);
+        self.stype ^= (self.stype ^ g.stype) & u;
     }
 
     /* return 1 if b==c, no branching */
@@ -169,20 +169,20 @@ impl FP24 {
 
     pub fn geta(&mut self) -> FP8 {
         return self.a;
-//        let f = FP8::new_copy(&self.a);
-//        return f;
+        //        let f = FP8::new_copy(&self.a);
+        //        return f;
     }
 
     pub fn getb(&mut self) -> FP8 {
         return self.b;
-//	let f = FP8::new_copy(&self.b);
-//        return f;
+        //	let f = FP8::new_copy(&self.b);
+        //        return f;
     }
 
     pub fn getc(&mut self) -> FP8 {
         return self.c;
-//        let f = FP8::new_copy(&self.c);
-//        return f;
+        //        let f = FP8::new_copy(&self.c);
+        //        return f;
     }
 
     /* copy self=x */
@@ -190,7 +190,7 @@ impl FP24 {
         self.a.copy(&x.a);
         self.b.copy(&x.b);
         self.c.copy(&x.c);
-	self.stype=x.stype;
+        self.stype = x.stype;
     }
 
     /* set self=1 */
@@ -198,7 +198,7 @@ impl FP24 {
         self.a.one();
         self.b.zero();
         self.c.zero();
-	self.stype=ONE;
+        self.stype = ONE;
     }
 
     /* set self=0 */
@@ -206,7 +206,7 @@ impl FP24 {
         self.a.zero();
         self.b.zero();
         self.c.zero();
-	self.stype=ZERO;
+        self.stype = ZERO;
     }
 
     /* this=conj(this) */
@@ -254,13 +254,13 @@ impl FP24 {
         self.c.dbl();
         self.b.add(&b);
         self.c.add(&c);
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.reduce();
     }
 
     /* Chung-Hasan SQR2 method from http://cacr.uwaterloo.ca/techreports/2006/cacr2006-24.pdf */
     pub fn sqr(&mut self) {
-        if self.stype==ONE {
+        if self.stype == ONE {
             return;
         }
         let mut a = FP8::new_copy(&self.a);
@@ -297,10 +297,10 @@ impl FP24 {
         self.b.copy(&c);
         self.b.add(&d);
         self.c.add(&a);
-        if self.stype==SPARSER {
-            self.stype=SPARSE;
+        if self.stype == SPARSER {
+            self.stype = SPARSE;
         } else {
-            self.stype=DENSE;
+            self.stype = DENSE;
         }
         self.norm();
     }
@@ -373,99 +373,112 @@ impl FP24 {
         z3.times_i();
         self.a.copy(&z0);
         self.a.add(&z3);
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.norm();
     }
 
-/* FP24 full multiplication w=w*y */
-/* Supports sparse multiplicands */
-/* Usually w is denser than y */
+    /* FP24 full multiplication w=w*y */
+    /* Supports sparse multiplicands */
+    /* Usually w is denser than y */
     pub fn ssmul(&mut self, y: &FP24) {
-        if self.stype==ONE {
+        if self.stype == ONE {
             self.copy(&y);
             return;
         }
-        if y.stype==ONE {
+        if y.stype == ONE {
             return;
         }
-        if y.stype>=SPARSE {
-            let mut z0=FP8::new_copy(&self.a);
-            let mut z1=FP8::new_int(0);
-            let mut z2=FP8::new_int(0);
-            let mut z3=FP8::new_int(0);
+        if y.stype >= SPARSE {
+            let mut z0 = FP8::new_copy(&self.a);
+            let mut z1 = FP8::new_int(0);
+            let mut z2 = FP8::new_int(0);
+            let mut z3 = FP8::new_int(0);
             z0.mul(&y.a);
 
-            if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE {
-                if y.stype==SPARSE || self.stype==SPARSE {
-
-                    let mut ga=FP4::new_int(0);
-		    let mut gb=FP4::new_int(0);
+            if ecp::SEXTIC_TWIST == SexticTwist::MType {
+                if y.stype == SPARSE || self.stype == SPARSE {
+                    let mut ga = FP4::new_int(0);
+                    let mut gb = FP4::new_int(0);
 
                     gb.copy(&self.b.getb());
                     gb.mul(&y.b.getb());
                     ga.zero();
-                    if y.stype!=SPARSE {
+                    if y.stype != SPARSE {
                         ga.copy(&self.b.getb());
                         ga.mul(&y.b.geta());
                     }
-                    if self.stype!=SPARSE {
+                    if self.stype != SPARSE {
                         ga.copy(&self.b.geta());
                         ga.mul(&y.b.getb());
                     }
-		    z2.set_fp4s(&ga,&gb);
+                    z2.set_fp4s(&ga, &gb);
                     z2.times_i();
                 } else {
                     z2.copy(&self.b);
                     z2.mul(&y.b);
                 }
             } else {
-               z2.copy(&self.b);
-               z2.mul(&y.b);
+                z2.copy(&self.b);
+                z2.mul(&y.b);
             }
-            let mut t0=FP8::new_copy(&self.a);
-            let mut t1=FP8::new_copy(&y.a);
-            t0.add(&self.b); t0.norm();
-            t1.add(&y.b); t1.norm();
-
-            z1.copy(&t0); z1.mul(&t1);
-            t0.copy(&self.b); t0.add(&self.c); t0.norm();
-            t1.copy(&y.b); t1.add(&y.c); t1.norm();
-
-            z3.copy(&t0); z3.mul(&t1);
-
-            t0.copy(&z0); t0.neg();
-            t1.copy(&z2); t1.neg();
+            let mut t0 = FP8::new_copy(&self.a);
+            let mut t1 = FP8::new_copy(&y.a);
+            t0.add(&self.b);
+            t0.norm();
+            t1.add(&y.b);
+            t1.norm();
+
+            z1.copy(&t0);
+            z1.mul(&t1);
+            t0.copy(&self.b);
+            t0.add(&self.c);
+            t0.norm();
+            t1.copy(&y.b);
+            t1.add(&y.c);
+            t1.norm();
+
+            z3.copy(&t0);
+            z3.mul(&t1);
+
+            t0.copy(&z0);
+            t0.neg();
+            t1.copy(&z2);
+            t1.neg();
 
             z1.add(&t0);
-            self.b.copy(&z1); self.b.add(&t1);
+            self.b.copy(&z1);
+            self.b.add(&t1);
 
             z3.add(&t1);
             z2.add(&t0);
 
-            t0.copy(&self.a); t0.add(&self.c); t0.norm();
-            t1.copy(&y.a); t1.add(&y.c); t1.norm();
+            t0.copy(&self.a);
+            t0.add(&self.c);
+            t0.norm();
+            t1.copy(&y.a);
+            t1.add(&y.c);
+            t1.norm();
 
             t0.mul(&t1);
             z2.add(&t0);
 
-            if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE {
-                if y.stype==SPARSE || self.stype==SPARSE {
-
-                    let mut ga=FP4::new_int(0);
-		    let mut gb=FP4::new_int(0);
+            if ecp::SEXTIC_TWIST == SexticTwist::DType {
+                if y.stype == SPARSE || self.stype == SPARSE {
+                    let mut ga = FP4::new_int(0);
+                    let mut gb = FP4::new_int(0);
 
                     ga.copy(&self.c.geta());
                     ga.mul(&y.c.geta());
                     gb.zero();
-                    if y.stype!=SPARSE {
+                    if y.stype != SPARSE {
                         gb.copy(&self.c.geta());
                         gb.mul(&y.c.getb());
                     }
-                    if self.stype!=SPARSE {
+                    if self.stype != SPARSE {
                         gb.copy(&self.c.getb());
                         gb.mul(&y.c.geta());
                     }
-		    t0.set_fp4s(&ga,&gb);
+                    t0.set_fp4s(&ga, &gb);
                 } else {
                     t0.copy(&self.c);
                     t0.mul(&y.c);
@@ -474,26 +487,30 @@ impl FP24 {
                 t0.copy(&self.c);
                 t0.mul(&y.c);
             }
-            t1.copy(&t0); t1.neg();
+            t1.copy(&t0);
+            t1.neg();
 
-            self.c.copy(&z2); self.c.add(&t1);
+            self.c.copy(&z2);
+            self.c.add(&t1);
             z3.add(&t1);
             t0.times_i();
             self.b.add(&t0);
             z3.norm();
             z3.times_i();
-            self.a.copy(&z0); self.a.add(&z3);
+            self.a.copy(&z0);
+            self.a.add(&z3);
         } else {
-            if self.stype==SPARSER {
+            if self.stype == SPARSER {
                 self.smul(&y);
                 return;
             }
-            if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { // dense by sparser - 13m
-                let mut z0=FP8::new_copy(&self.a);
-                let mut z2=FP8::new_copy(&self.b);
-                let mut z3=FP8::new_copy(&self.b);
-                let mut t0=FP8::new_int(0);
-                let mut t1=FP8::new_copy(&y.a);
+            if ecp::SEXTIC_TWIST == SexticTwist::DType {
+                // dense by sparser - 13m
+                let mut z0 = FP8::new_copy(&self.a);
+                let mut z2 = FP8::new_copy(&self.b);
+                let mut z3 = FP8::new_copy(&self.b);
+                let mut t0 = FP8::new_int(0);
+                let mut t1 = FP8::new_copy(&y.a);
 
                 z0.mul(&y.a);
                 z2.pmul(&y.b.geta());
@@ -507,8 +524,10 @@ impl FP24 {
                 z3.norm();
                 z3.pmul(&y.b.geta());
 
-                t0.copy(&z0); t0.neg();
-                t1.copy(&z2); t1.neg();
+                t0.copy(&z0);
+                t0.neg();
+                t1.copy(&z2);
+                t1.neg();
 
                 self.b.add(&t0);
 
@@ -516,16 +535,19 @@ impl FP24 {
                 z3.add(&t1);
                 z2.add(&t0);
 
-                t0.copy(&self.a); t0.add(&self.c); t0.norm();
+                t0.copy(&self.a);
+                t0.add(&self.c);
+                t0.norm();
                 z3.norm();
                 t0.mul(&y.a);
-                self.c.copy(&z2); self.c.add(&t0);
+                self.c.copy(&z2);
+                self.c.add(&t0);
 
                 z3.times_i();
-                self.a.copy(&z0); self.a.add(&z3);
+                self.a.copy(&z0);
+                self.a.add(&z3);
             }
-            if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE {
-
+            if ecp::SEXTIC_TWIST == SexticTwist::MType {
                 let mut z0 = FP8::new_copy(&self.a);
                 let mut z1 = FP8::new();
                 let mut z2 = FP8::new();
@@ -534,23 +556,31 @@ impl FP24 {
                 let mut t1 = FP8::new();
 
                 z0.mul(&y.a);
-                t0.add(&self.b); t0.norm();
+                t0.add(&self.b);
+                t0.norm();
 
-                z1.copy(&t0); z1.mul(&y.a);
-                t0.copy(&self.b); t0.add(&self.c);
+                z1.copy(&t0);
+                z1.mul(&y.a);
+                t0.copy(&self.b);
+                t0.add(&self.c);
                 t0.norm();
 
                 z3.copy(&t0);
                 z3.pmul(&y.c.getb());
                 z3.times_i();
 
-                t0.copy(&z0); t0.neg();
+                t0.copy(&z0);
+                t0.neg();
                 z1.add(&t0);
                 self.b.copy(&z1);
                 z2.copy(&t0);
 
-                t0.copy(&self.a); t0.add(&self.c); t0.norm();
-                t1.copy(&y.a); t1.add(&y.c); t1.norm();
+                t0.copy(&self.a);
+                t0.add(&self.c);
+                t0.norm();
+                t1.copy(&y.a);
+                t1.add(&y.c);
+                t1.norm();
 
                 t0.mul(&t1);
                 z2.add(&t0);
@@ -558,56 +588,68 @@ impl FP24 {
 
                 t0.pmul(&y.c.getb());
                 t0.times_i();
-                t1.copy(&t0); t1.neg();
+                t1.copy(&t0);
+                t1.neg();
 
-                self.c.copy(&z2); self.c.add(&t1);
+                self.c.copy(&z2);
+                self.c.add(&t1);
                 z3.add(&t1);
                 t0.times_i();
                 self.b.add(&t0);
                 z3.norm();
                 z3.times_i();
-                self.a.copy(&z0); self.a.add(&z3);
-           }
+                self.a.copy(&z0);
+                self.a.add(&z3);
+            }
         }
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.norm();
     }
 
-
     /* Special case of multiplication arises from special form of ATE pairing line function */
     pub fn smul(&mut self, y: &FP24) {
-        if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE {
-            let mut w1=FP4::new_copy(&self.a.geta());
-            let mut w2=FP4::new_copy(&self.a.getb());
-            let mut w3=FP4::new_copy(&self.b.geta());
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
+            let mut w1 = FP4::new_copy(&self.a.geta());
+            let mut w2 = FP4::new_copy(&self.a.getb());
+            let mut w3 = FP4::new_copy(&self.b.geta());
 
             w1.mul(&y.a.geta());
             w2.mul(&y.a.getb());
             w3.mul(&y.b.geta());
 
-            let mut ta=FP4::new_copy(&self.a.geta());
-            let mut tb=FP4::new_copy(&y.a.geta());
-            ta.add(&self.a.getb()); ta.norm();
-            tb.add(&y.a.getb()); tb.norm();
-            let mut tc=FP4::new_copy(&ta);
+            let mut ta = FP4::new_copy(&self.a.geta());
+            let mut tb = FP4::new_copy(&y.a.geta());
+            ta.add(&self.a.getb());
+            ta.norm();
+            tb.add(&y.a.getb());
+            tb.norm();
+            let mut tc = FP4::new_copy(&ta);
             tc.mul(&tb);
-            let mut t=FP4::new_copy(&w1);
+            let mut t = FP4::new_copy(&w1);
             t.add(&w2);
             t.neg();
             tc.add(&t);
 
-            ta.copy(&self.a.geta()); ta.add(&self.b.geta()); ta.norm();
-            tb.copy(&y.a.geta()); tb.add(&y.b.geta()); tb.norm();
-            let mut td=FP4::new_copy(&ta);
+            ta.copy(&self.a.geta());
+            ta.add(&self.b.geta());
+            ta.norm();
+            tb.copy(&y.a.geta());
+            tb.add(&y.b.geta());
+            tb.norm();
+            let mut td = FP4::new_copy(&ta);
             td.mul(&tb);
             t.copy(&w1);
             t.add(&w3);
             t.neg();
             td.add(&t);
 
-            ta.copy(&self.a.getb()); ta.add(&self.b.geta()); ta.norm();
-            tb.copy(&y.a.getb()); tb.add(&y.b.geta()); tb.norm();
-            let mut te=FP4::new_copy(&ta);
+            ta.copy(&self.a.getb());
+            ta.add(&self.b.geta());
+            ta.norm();
+            tb.copy(&y.a.getb());
+            tb.add(&y.b.geta());
+            tb.norm();
+            let mut te = FP4::new_copy(&ta);
             te.mul(&tb);
             t.copy(&w2);
             t.add(&w3);
@@ -617,44 +659,54 @@ impl FP24 {
             w2.times_i();
             w1.add(&w2);
 
-	    self.a.set_fp4s(&w1,&tc);
-	    self.b.set_fp4s(&td,&te);
-	    self.c.set_fp4(&w3);
+            self.a.set_fp4s(&w1, &tc);
+            self.b.set_fp4s(&td, &te);
+            self.c.set_fp4(&w3);
 
             self.a.norm();
             self.b.norm();
         } else {
-            let mut w1=FP4::new_copy(&self.a.geta());
-            let mut w2=FP4::new_copy(&self.a.getb());
-            let mut w3=FP4::new_copy(&self.c.getb());
+            let mut w1 = FP4::new_copy(&self.a.geta());
+            let mut w2 = FP4::new_copy(&self.a.getb());
+            let mut w3 = FP4::new_copy(&self.c.getb());
 
             w1.mul(&y.a.geta());
             w2.mul(&y.a.getb());
             w3.mul(&y.c.getb());
 
-            let mut ta=FP4::new_copy(&self.a.geta());
-            let mut tb=FP4::new_copy(&y.a.geta());
-            ta.add(&self.a.getb()); ta.norm();
-            tb.add(&y.a.getb()); tb.norm();
-            let mut tc=FP4::new_copy(&ta);
+            let mut ta = FP4::new_copy(&self.a.geta());
+            let mut tb = FP4::new_copy(&y.a.geta());
+            ta.add(&self.a.getb());
+            ta.norm();
+            tb.add(&y.a.getb());
+            tb.norm();
+            let mut tc = FP4::new_copy(&ta);
             tc.mul(&tb);
-            let mut t=FP4::new_copy(&w1);
+            let mut t = FP4::new_copy(&w1);
             t.add(&w2);
             t.neg();
             tc.add(&t);
 
-            ta.copy(&self.a.geta()); ta.add(&self.c.getb()); ta.norm();
-            tb.copy(&y.a.geta()); tb.add(&y.c.getb()); tb.norm();
-            let mut td=FP4::new_copy(&ta);
+            ta.copy(&self.a.geta());
+            ta.add(&self.c.getb());
+            ta.norm();
+            tb.copy(&y.a.geta());
+            tb.add(&y.c.getb());
+            tb.norm();
+            let mut td = FP4::new_copy(&ta);
             td.mul(&tb);
             t.copy(&w1);
             t.add(&w3);
             t.neg();
             td.add(&t);
 
-            ta.copy(&self.a.getb()); ta.add(&self.c.getb()); ta.norm();
-            tb.copy(&y.a.getb()); tb.add(&y.c.getb()); tb.norm();
-            let mut te=FP4::new_copy(&ta);
+            ta.copy(&self.a.getb());
+            ta.add(&self.c.getb());
+            ta.norm();
+            tb.copy(&y.a.getb());
+            tb.add(&y.c.getb());
+            tb.norm();
+            let mut te = FP4::new_copy(&ta);
             te.mul(&tb);
             t.copy(&w2);
             t.add(&w3);
@@ -663,20 +715,20 @@ impl FP24 {
 
             w2.times_i();
             w1.add(&w2);
-	    self.a.set_fp4s(&w1,&tc);
+            self.a.set_fp4s(&w1, &tc);
 
             w3.times_i();
             w3.norm();
-	    self.b.set_fp4h(&w3);
+            self.b.set_fp4h(&w3);
 
             te.norm();
             te.times_i();
-	    self.c.set_fp4s(&te,&td);
+            self.c.set_fp4s(&te, &td);
 
             self.a.norm();
             self.c.norm();
-	}
-	self.stype=SPARSE;
+        }
+        self.stype = SPARSE;
     }
 
     /* self=1/self */
@@ -724,7 +776,7 @@ impl FP24 {
         self.b.mul(&f3);
         self.c.copy(&f2);
         self.c.mul(&f3);
-        self.stype=DENSE;
+        self.stype = DENSE;
     }
 
     /* self=self^p using Frobenius */
@@ -749,7 +801,7 @@ impl FP24 {
             self.c.times_i2();
             self.c.times_i2();
         }
-        self.stype=DENSE;
+        self.stype = DENSE;
     }
 
     /* trace function */
diff --git a/src/fp4.rs b/src/fp4.rs
index d2d890b..3fda179 100644
--- a/src/fp4.rs
+++ b/src/fp4.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
+use super::big::Big;
 use super::fp::FP;
 use super::fp2::FP2;
-use super::big::Big;
 use std::str::SplitWhitespace;
 
 #[derive(Copy, Clone)]
@@ -29,9 +29,9 @@ pub struct FP4 {
 }
 
 impl PartialEq for FP4 {
-	fn eq(&self, other: &FP4) -> bool {
-		self.equals(other)
-	}
+    fn eq(&self, other: &FP4) -> bool {
+        self.equals(other)
+    }
 }
 
 impl FP4 {
@@ -70,19 +70,19 @@ impl FP4 {
         return f;
     }
 
-    pub fn set_fp2s(&mut self,c: &FP2, d: &FP2) {
+    pub fn set_fp2s(&mut self, c: &FP2, d: &FP2) {
         self.a.copy(&c);
-	self.b.copy(&d);
+        self.b.copy(&d);
     }
 
-    pub fn set_fp2(&mut self,c: &FP2) {
+    pub fn set_fp2(&mut self, c: &FP2) {
         self.a.copy(&c);
-	self.b.zero();
+        self.b.zero();
     }
 
-    pub fn set_fp2h(&mut self,c: &FP2) {
+    pub fn set_fp2h(&mut self, c: &FP2) {
         self.b.copy(&c);
-	self.a.zero();
+        self.a.zero();
     }
 
     /* reduce components mod Modulus */
@@ -125,14 +125,14 @@ impl FP4 {
 
     pub fn geta(&self) -> FP2 {
         return self.a;
-//        let f = FP2::new_copy(&self.a);
-//        return f;
+        //        let f = FP2::new_copy(&self.a);
+        //        return f;
     }
     /* extract imaginary part b */
     pub fn getb(&self) -> FP2 {
         return self.b;
-//        let f = FP2::new_copy(&self.b);
-//        return f;
+        //        let f = FP2::new_copy(&self.b);
+        //        return f;
     }
 
     /* test self=x */
@@ -313,7 +313,7 @@ impl FP4 {
     pub fn from_hex_iter(iter: &mut SplitWhitespace) -> FP4 {
         FP4 {
             a: FP2::from_hex_iter(iter),
-            b: FP2::from_hex_iter(iter)
+            b: FP2::from_hex_iter(iter),
         }
     }
 
@@ -370,7 +370,7 @@ impl FP4 {
             let bt = z.parity();
             z.fshr(1);
             if bt == 1 {
-                r.mul(&mut w)
+                r.mul(&w)
             };
             if z.iszilch() {
                 break;
@@ -607,7 +607,7 @@ impl FP4 {
         for _ in 0..f2 {
             r.xtr_d()
         }
-        r = r.xtr_pow(&mut d);
+        r = r.xtr_pow(&d);
         return r;
     }
 
diff --git a/src/fp48.rs b/src/fp48.rs
index ff64d4c..8ab6063 100644
--- a/src/fp48.rs
+++ b/src/fp48.rs
@@ -18,21 +18,21 @@ under the License.
 */
 
 use super::big;
+use super::big::Big;
 use super::ecp;
+use super::fp16::FP16;
 use super::fp2::FP2;
 use super::fp4::FP4;
 use super::fp8::FP8;
-use super::fp16::FP16;
-use super::big::Big;
 use super::rom;
 use types::SexticTwist;
 //use std::str::SplitWhitespace;
 
-pub const ZERO: usize=0;
-pub const ONE: usize=1;
-pub const SPARSER: usize=2;
-pub const SPARSE: usize=3;
-pub const DENSE: usize=4;
+pub const ZERO: usize = 0;
+pub const ONE: usize = 1;
+pub const SPARSER: usize = 2;
+pub const SPARSE: usize = 3;
+pub const DENSE: usize = 4;
 
 #[derive(Copy, Clone)]
 pub struct FP48 {
@@ -48,12 +48,12 @@ impl FP48 {
             a: FP16::new(),
             b: FP16::new(),
             c: FP16::new(),
-	    stype: ZERO,
+            stype: ZERO,
         }
     }
 
-    pub fn settype(&mut self,t: usize)  {
-	self.stype = t;
+    pub fn settype(&mut self, t: usize) {
+        self.stype = t;
     }
 
     pub fn gettype(&self) -> usize {
@@ -65,11 +65,11 @@ impl FP48 {
         f.a.copy(&FP16::new_int(a));
         f.b.zero();
         f.c.zero();
-	if a == 1 {
-	    f.stype=ONE;
-	} else {
-	    f.stype=SPARSER;
-	}
+        if a == 1 {
+            f.stype = ONE;
+        } else {
+            f.stype = SPARSER;
+        }
         return f;
     }
 
@@ -78,7 +78,7 @@ impl FP48 {
         f.a.copy(&x.a);
         f.b.copy(&x.b);
         f.c.copy(&x.c);
-	f.stype=x.stype;
+        f.stype = x.stype;
         return f;
     }
 
@@ -87,7 +87,7 @@ impl FP48 {
         g.a.copy(d);
         g.b.copy(e);
         g.c.copy(f);
-	g.stype=DENSE;
+        g.stype = DENSE;
         return g;
     }
 
@@ -96,7 +96,7 @@ impl FP48 {
         g.a.copy(d);
         g.b.zero();
         g.c.zero();
-	g.stype=SPARSER;
+        g.stype = SPARSER;
         return g;
     }
 
@@ -124,9 +124,9 @@ impl FP48 {
         self.a.cmove(&g.a, d);
         self.b.cmove(&g.b, d);
         self.c.cmove(&g.c, d);
-	let mut u=d as usize;
-	u=!(u-1);
-	self.stype^=(self.stype^g.stype)&u;
+        let mut u = d as usize;
+        u = !(u - 1);
+        self.stype ^= (self.stype ^ g.stype) & u;
     }
 
     /* return 1 if b==c, no branching */
@@ -170,20 +170,20 @@ impl FP48 {
 
     pub fn geta(&mut self) -> FP16 {
         return self.a;
-//        let f = FP16::new_copy(&self.a);
-//        return f;
+        //        let f = FP16::new_copy(&self.a);
+        //        return f;
     }
 
     pub fn getb(&mut self) -> FP16 {
         return self.b;
-//        let f = FP16::new_copy(&self.b);
-//        return f;
+        //        let f = FP16::new_copy(&self.b);
+        //        return f;
     }
 
     pub fn getc(&mut self) -> FP16 {
         return self.c;
-//        let f = FP16::new_copy(&self.c);
-//        return f;
+        //        let f = FP16::new_copy(&self.c);
+        //        return f;
     }
 
     /* copy self=x */
@@ -191,7 +191,7 @@ impl FP48 {
         self.a.copy(&x.a);
         self.b.copy(&x.b);
         self.c.copy(&x.c);
-	self.stype=x.stype;
+        self.stype = x.stype;
     }
 
     /* set self=1 */
@@ -199,7 +199,7 @@ impl FP48 {
         self.a.one();
         self.b.zero();
         self.c.zero();
-	self.stype=ONE;
+        self.stype = ONE;
     }
 
     /* set self=0 */
@@ -207,7 +207,7 @@ impl FP48 {
         self.a.zero();
         self.b.zero();
         self.c.zero();
-	self.stype=ZERO;
+        self.stype = ZERO;
     }
 
     /* this=conj(this) */
@@ -255,13 +255,13 @@ impl FP48 {
         self.c.dbl();
         self.b.add(&b);
         self.c.add(&c);
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.reduce();
     }
 
     /* Chung-Hasan SQR2 method from http://cacr.uwaterloo.ca/techreports/2006/cacr2006-24.pdf */
     pub fn sqr(&mut self) {
-        if self.stype==ONE {
+        if self.stype == ONE {
             return;
         }
         let mut a = FP16::new_copy(&self.a);
@@ -298,10 +298,10 @@ impl FP48 {
         self.b.copy(&c);
         self.b.add(&d);
         self.c.add(&a);
-        if self.stype==SPARSER {
-            self.stype=SPARSE;
+        if self.stype == SPARSER {
+            self.stype = SPARSE;
         } else {
-            self.stype=DENSE;
+            self.stype = DENSE;
         }
         self.norm();
     }
@@ -373,99 +373,112 @@ impl FP48 {
         z3.times_i();
         self.a.copy(&z0);
         self.a.add(&z3);
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.norm();
     }
 
-/* FP48 full multiplication w=w*y */
-/* Supports sparse multiplicands */
-/* Usually w is denser than y */
+    /* FP48 full multiplication w=w*y */
+    /* Supports sparse multiplicands */
+    /* Usually w is denser than y */
     pub fn ssmul(&mut self, y: &FP48) {
-        if self.stype==ONE {
+        if self.stype == ONE {
             self.copy(&y);
             return;
         }
-        if y.stype==ONE {
+        if y.stype == ONE {
             return;
         }
-        if y.stype>=SPARSE {
-            let mut z0=FP16::new_copy(&self.a);
-            let mut z1=FP16::new_int(0);
-            let mut z2=FP16::new_int(0);
-            let mut z3=FP16::new_int(0);
+        if y.stype >= SPARSE {
+            let mut z0 = FP16::new_copy(&self.a);
+            let mut z1 = FP16::new_int(0);
+            let mut z2 = FP16::new_int(0);
+            let mut z3 = FP16::new_int(0);
             z0.mul(&y.a);
 
-            if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE {
-                if y.stype==SPARSE || self.stype==SPARSE {
-
-                    let mut ga=FP8::new_int(0);
-		    let mut gb=FP8::new_int(0);
+            if ecp::SEXTIC_TWIST == SexticTwist::MType {
+                if y.stype == SPARSE || self.stype == SPARSE {
+                    let mut ga = FP8::new_int(0);
+                    let mut gb = FP8::new_int(0);
 
                     gb.copy(&self.b.getb());
                     gb.mul(&y.b.getb());
                     ga.zero();
-                    if y.stype!=SPARSE {
+                    if y.stype != SPARSE {
                         ga.copy(&self.b.getb());
                         ga.mul(&y.b.geta());
                     }
-                    if self.stype!=SPARSE {
+                    if self.stype != SPARSE {
                         ga.copy(&self.b.geta());
                         ga.mul(&y.b.getb());
                     }
-		    z2.set_fp8s(&ga,&gb);
+                    z2.set_fp8s(&ga, &gb);
                     z2.times_i();
                 } else {
                     z2.copy(&self.b);
                     z2.mul(&y.b);
                 }
             } else {
-               z2.copy(&self.b);
-               z2.mul(&y.b);
+                z2.copy(&self.b);
+                z2.mul(&y.b);
             }
-            let mut t0=FP16::new_copy(&self.a);
-            let mut t1=FP16::new_copy(&y.a);
-            t0.add(&self.b); t0.norm();
-            t1.add(&y.b); t1.norm();
-
-            z1.copy(&t0); z1.mul(&t1);
-            t0.copy(&self.b); t0.add(&self.c); t0.norm();
-            t1.copy(&y.b); t1.add(&y.c); t1.norm();
-
-            z3.copy(&t0); z3.mul(&t1);
-
-            t0.copy(&z0); t0.neg();
-            t1.copy(&z2); t1.neg();
+            let mut t0 = FP16::new_copy(&self.a);
+            let mut t1 = FP16::new_copy(&y.a);
+            t0.add(&self.b);
+            t0.norm();
+            t1.add(&y.b);
+            t1.norm();
+
+            z1.copy(&t0);
+            z1.mul(&t1);
+            t0.copy(&self.b);
+            t0.add(&self.c);
+            t0.norm();
+            t1.copy(&y.b);
+            t1.add(&y.c);
+            t1.norm();
+
+            z3.copy(&t0);
+            z3.mul(&t1);
+
+            t0.copy(&z0);
+            t0.neg();
+            t1.copy(&z2);
+            t1.neg();
 
             z1.add(&t0);
-            self.b.copy(&z1); self.b.add(&t1);
+            self.b.copy(&z1);
+            self.b.add(&t1);
 
             z3.add(&t1);
             z2.add(&t0);
 
-            t0.copy(&self.a); t0.add(&self.c); t0.norm();
-            t1.copy(&y.a); t1.add(&y.c); t1.norm();
+            t0.copy(&self.a);
+            t0.add(&self.c);
+            t0.norm();
+            t1.copy(&y.a);
+            t1.add(&y.c);
+            t1.norm();
 
             t0.mul(&t1);
             z2.add(&t0);
 
-            if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE {
-                if y.stype==SPARSE || self.stype==SPARSE {
-
-                    let mut ga=FP8::new_int(0);
-		    let mut gb=FP8::new_int(0);
+            if ecp::SEXTIC_TWIST == SexticTwist::DType {
+                if y.stype == SPARSE || self.stype == SPARSE {
+                    let mut ga = FP8::new_int(0);
+                    let mut gb = FP8::new_int(0);
 
                     ga.copy(&self.c.geta());
                     ga.mul(&y.c.geta());
                     gb.zero();
-                    if y.stype!=SPARSE {
+                    if y.stype != SPARSE {
                         gb.copy(&self.c.geta());
                         gb.mul(&y.c.getb());
                     }
-                    if self.stype!=SPARSE {
+                    if self.stype != SPARSE {
                         gb.copy(&self.c.getb());
                         gb.mul(&y.c.geta());
                     }
-		    t0.set_fp8s(&ga,&gb);
+                    t0.set_fp8s(&ga, &gb);
                 } else {
                     t0.copy(&self.c);
                     t0.mul(&y.c);
@@ -474,26 +487,30 @@ impl FP48 {
                 t0.copy(&self.c);
                 t0.mul(&y.c);
             }
-            t1.copy(&t0); t1.neg();
+            t1.copy(&t0);
+            t1.neg();
 
-            self.c.copy(&z2); self.c.add(&t1);
+            self.c.copy(&z2);
+            self.c.add(&t1);
             z3.add(&t1);
             t0.times_i();
             self.b.add(&t0);
             z3.norm();
             z3.times_i();
-            self.a.copy(&z0); self.a.add(&z3);
+            self.a.copy(&z0);
+            self.a.add(&z3);
         } else {
-            if self.stype==SPARSER {
+            if self.stype == SPARSER {
                 self.smul(&y);
                 return;
             }
-            if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { // dense by sparser - 13m
-                let mut z0=FP16::new_copy(&self.a);
-                let mut z2=FP16::new_copy(&self.b);
-                let mut z3=FP16::new_copy(&self.b);
-                let mut t0=FP16::new_int(0);
-                let mut t1=FP16::new_copy(&y.a);
+            if ecp::SEXTIC_TWIST == SexticTwist::DType {
+                // dense by sparser - 13m
+                let mut z0 = FP16::new_copy(&self.a);
+                let mut z2 = FP16::new_copy(&self.b);
+                let mut z3 = FP16::new_copy(&self.b);
+                let mut t0 = FP16::new_int(0);
+                let mut t1 = FP16::new_copy(&y.a);
 
                 z0.mul(&y.a);
                 z2.pmul(&y.b.geta());
@@ -507,8 +524,10 @@ impl FP48 {
                 z3.norm();
                 z3.pmul(&y.b.geta());
 
-                t0.copy(&z0); t0.neg();
-                t1.copy(&z2); t1.neg();
+                t0.copy(&z0);
+                t0.neg();
+                t1.copy(&z2);
+                t1.neg();
 
                 self.b.add(&t0);
 
@@ -516,16 +535,19 @@ impl FP48 {
                 z3.add(&t1);
                 z2.add(&t0);
 
-                t0.copy(&self.a); t0.add(&self.c); t0.norm();
+                t0.copy(&self.a);
+                t0.add(&self.c);
+                t0.norm();
                 z3.norm();
                 t0.mul(&y.a);
-                self.c.copy(&z2); self.c.add(&t0);
+                self.c.copy(&z2);
+                self.c.add(&t0);
 
                 z3.times_i();
-                self.a.copy(&z0); self.a.add(&z3);
+                self.a.copy(&z0);
+                self.a.add(&z3);
             }
-            if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE {
-
+            if ecp::SEXTIC_TWIST == SexticTwist::MType {
                 let mut z0 = FP16::new_copy(&self.a);
                 let mut z1 = FP16::new();
                 let mut z2 = FP16::new();
@@ -534,23 +556,31 @@ impl FP48 {
                 let mut t1 = FP16::new();
 
                 z0.mul(&y.a);
-                t0.add(&self.b); t0.norm();
+                t0.add(&self.b);
+                t0.norm();
 
-                z1.copy(&t0); z1.mul(&y.a);
-                t0.copy(&self.b); t0.add(&self.c);
+                z1.copy(&t0);
+                z1.mul(&y.a);
+                t0.copy(&self.b);
+                t0.add(&self.c);
                 t0.norm();
 
                 z3.copy(&t0);
                 z3.pmul(&y.c.getb());
                 z3.times_i();
 
-                t0.copy(&z0); t0.neg();
+                t0.copy(&z0);
+                t0.neg();
                 z1.add(&t0);
                 self.b.copy(&z1);
                 z2.copy(&t0);
 
-                t0.copy(&self.a); t0.add(&self.c); t0.norm();
-                t1.copy(&y.a); t1.add(&y.c); t1.norm();
+                t0.copy(&self.a);
+                t0.add(&self.c);
+                t0.norm();
+                t1.copy(&y.a);
+                t1.add(&y.c);
+                t1.norm();
 
                 t0.mul(&t1);
                 z2.add(&t0);
@@ -558,56 +588,68 @@ impl FP48 {
 
                 t0.pmul(&y.c.getb());
                 t0.times_i();
-                t1.copy(&t0); t1.neg();
+                t1.copy(&t0);
+                t1.neg();
 
-                self.c.copy(&z2); self.c.add(&t1);
+                self.c.copy(&z2);
+                self.c.add(&t1);
                 z3.add(&t1);
                 t0.times_i();
                 self.b.add(&t0);
                 z3.norm();
                 z3.times_i();
-                self.a.copy(&z0); self.a.add(&z3);
-           }
+                self.a.copy(&z0);
+                self.a.add(&z3);
+            }
         }
-        self.stype=DENSE;
+        self.stype = DENSE;
         self.norm();
     }
 
-
     /* Special case of multiplication arises from special form of ATE pairing line function */
     pub fn smul(&mut self, y: &FP48) {
-        if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE {
-            let mut w1=FP8::new_copy(&self.a.geta());
-            let mut w2=FP8::new_copy(&self.a.getb());
-            let mut w3=FP8::new_copy(&self.b.geta());
+        if ecp::SEXTIC_TWIST == SexticTwist::DType {
+            let mut w1 = FP8::new_copy(&self.a.geta());
+            let mut w2 = FP8::new_copy(&self.a.getb());
+            let mut w3 = FP8::new_copy(&self.b.geta());
 
             w1.mul(&y.a.geta());
             w2.mul(&y.a.getb());
             w3.mul(&y.b.geta());
 
-            let mut ta=FP8::new_copy(&self.a.geta());
-            let mut tb=FP8::new_copy(&y.a.geta());
-            ta.add(&self.a.getb()); ta.norm();
-            tb.add(&y.a.getb()); tb.norm();
-            let mut tc=FP8::new_copy(&ta);
+            let mut ta = FP8::new_copy(&self.a.geta());
+            let mut tb = FP8::new_copy(&y.a.geta());
+            ta.add(&self.a.getb());
+            ta.norm();
+            tb.add(&y.a.getb());
+            tb.norm();
+            let mut tc = FP8::new_copy(&ta);
             tc.mul(&tb);
-            let mut t=FP8::new_copy(&w1);
+            let mut t = FP8::new_copy(&w1);
             t.add(&w2);
             t.neg();
             tc.add(&t);
 
-            ta.copy(&self.a.geta()); ta.add(&self.b.geta()); ta.norm();
-            tb.copy(&y.a.geta()); tb.add(&y.b.geta()); tb.norm();
-            let mut td=FP8::new_copy(&ta);
+            ta.copy(&self.a.geta());
+            ta.add(&self.b.geta());
+            ta.norm();
+            tb.copy(&y.a.geta());
+            tb.add(&y.b.geta());
+            tb.norm();
+            let mut td = FP8::new_copy(&ta);
             td.mul(&tb);
             t.copy(&w1);
             t.add(&w3);
             t.neg();
             td.add(&t);
 
-            ta.copy(&self.a.getb()); ta.add(&self.b.geta()); ta.norm();
-            tb.copy(&y.a.getb()); tb.add(&y.b.geta()); tb.norm();
-            let mut te=FP8::new_copy(&ta);
+            ta.copy(&self.a.getb());
+            ta.add(&self.b.geta());
+            ta.norm();
+            tb.copy(&y.a.getb());
+            tb.add(&y.b.geta());
+            tb.norm();
+            let mut te = FP8::new_copy(&ta);
             te.mul(&tb);
             t.copy(&w2);
             t.add(&w3);
@@ -617,44 +659,54 @@ impl FP48 {
             w2.times_i();
             w1.add(&w2);
 
-	    self.a.set_fp8s(&w1,&tc);
-	    self.b.set_fp8s(&td,&te);
-	    self.c.set_fp8(&w3);
+            self.a.set_fp8s(&w1, &tc);
+            self.b.set_fp8s(&td, &te);
+            self.c.set_fp8(&w3);
 
             self.a.norm();
             self.b.norm();
         } else {
-            let mut w1=FP8::new_copy(&self.a.geta());
-            let mut w2=FP8::new_copy(&self.a.getb());
-            let mut w3=FP8::new_copy(&self.c.getb());
+            let mut w1 = FP8::new_copy(&self.a.geta());
+            let mut w2 = FP8::new_copy(&self.a.getb());
+            let mut w3 = FP8::new_copy(&self.c.getb());
 
             w1.mul(&y.a.geta());
             w2.mul(&y.a.getb());
             w3.mul(&y.c.getb());
 
-            let mut ta=FP8::new_copy(&self.a.geta());
-            let mut tb=FP8::new_copy(&y.a.geta());
-            ta.add(&self.a.getb()); ta.norm();
-            tb.add(&y.a.getb()); tb.norm();
-            let mut tc=FP8::new_copy(&ta);
+            let mut ta = FP8::new_copy(&self.a.geta());
+            let mut tb = FP8::new_copy(&y.a.geta());
+            ta.add(&self.a.getb());
+            ta.norm();
+            tb.add(&y.a.getb());
+            tb.norm();
+            let mut tc = FP8::new_copy(&ta);
             tc.mul(&tb);
-            let mut t=FP8::new_copy(&w1);
+            let mut t = FP8::new_copy(&w1);
             t.add(&w2);
             t.neg();
             tc.add(&t);
 
-            ta.copy(&self.a.geta()); ta.add(&self.c.getb()); ta.norm();
-            tb.copy(&y.a.geta()); tb.add(&y.c.getb()); tb.norm();
-            let mut td=FP8::new_copy(&ta);
+            ta.copy(&self.a.geta());
+            ta.add(&self.c.getb());
+            ta.norm();
+            tb.copy(&y.a.geta());
+            tb.add(&y.c.getb());
+            tb.norm();
+            let mut td = FP8::new_copy(&ta);
             td.mul(&tb);
             t.copy(&w1);
             t.add(&w3);
             t.neg();
             td.add(&t);
 
-            ta.copy(&self.a.getb()); ta.add(&self.c.getb()); ta.norm();
-            tb.copy(&y.a.getb()); tb.add(&y.c.getb()); tb.norm();
-            let mut te=FP8::new_copy(&ta);
+            ta.copy(&self.a.getb());
+            ta.add(&self.c.getb());
+            ta.norm();
+            tb.copy(&y.a.getb());
+            tb.add(&y.c.getb());
+            tb.norm();
+            let mut te = FP8::new_copy(&ta);
             te.mul(&tb);
             t.copy(&w2);
             t.add(&w3);
@@ -663,20 +715,20 @@ impl FP48 {
 
             w2.times_i();
             w1.add(&w2);
-	    self.a.set_fp8s(&w1,&tc);
+            self.a.set_fp8s(&w1, &tc);
 
             w3.times_i();
             w3.norm();
-	    self.b.set_fp8h(&w3);
+            self.b.set_fp8h(&w3);
 
             te.norm();
             te.times_i();
-	    self.c.set_fp8s(&te,&td);
+            self.c.set_fp8s(&te, &td);
 
             self.a.norm();
             self.c.norm();
-	}
-	self.stype=SPARSE;
+        }
+        self.stype = SPARSE;
     }
 
     /* self=1/self */
@@ -724,7 +776,7 @@ impl FP48 {
         self.b.mul(&f3);
         self.c.copy(&f2);
         self.c.mul(&f3);
-        self.stype=DENSE;
+        self.stype = DENSE;
     }
 
     /* self=self^p using Frobenius */
@@ -753,7 +805,7 @@ impl FP48 {
             self.c.times_i4();
             self.c.times_i4();
         }
-        self.stype=DENSE;
+        self.stype = DENSE;
     }
 
     /* trace function */
diff --git a/src/fp8.rs b/src/fp8.rs
index 1fcc336..38515a8 100644
--- a/src/fp8.rs
+++ b/src/fp8.rs
@@ -17,10 +17,10 @@ specific language governing permissions and limitations
 under the License.
 */
 
+use super::big::Big;
 use super::fp::FP;
 use super::fp2::FP2;
 use super::fp4::FP4;
-use super::big::Big;
 //use std::str::SplitWhitespace;
 
 #[derive(Copy, Clone)]
@@ -65,22 +65,21 @@ impl FP8 {
         return f;
     }
 
-    pub fn set_fp4s(&mut self,c: &FP4, d: &FP4) {
+    pub fn set_fp4s(&mut self, c: &FP4, d: &FP4) {
         self.a.copy(&c);
-	self.b.copy(&d);
+        self.b.copy(&d);
     }
 
-    pub fn set_fp4(&mut self,c: &FP4) {
+    pub fn set_fp4(&mut self, c: &FP4) {
         self.a.copy(&c);
-	self.b.zero();
+        self.b.zero();
     }
 
-    pub fn set_fp4h(&mut self,c: &FP4) {
+    pub fn set_fp4h(&mut self, c: &FP4) {
         self.b.copy(&c);
-	self.a.zero();
+        self.a.zero();
     }
 
-
     /* reduce components mod Modulus */
     pub fn reduce(&mut self) {
         self.a.reduce();
@@ -121,14 +120,14 @@ impl FP8 {
 
     pub fn geta(&self) -> FP4 {
         return self.a;
-//        let f = FP4::new_copy(&self.a);
-//        return f;
+        //        let f = FP4::new_copy(&self.a);
+        //        return f;
     }
     /* extract imaginary part b */
     pub fn getb(&self) -> FP4 {
         return self.b;
-//        let f = FP4::new_copy(&self.b);
-//        return f;
+        //        let f = FP4::new_copy(&self.b);
+        //        return f;
     }
 
     /* test self=x */
@@ -368,7 +367,7 @@ impl FP8 {
             let bt = z.parity();
             z.fshr(1);
             if bt == 1 {
-                r.mul(&mut w)
+                r.mul(&w)
             };
             if z.iszilch() {
                 break;
diff --git a/src/hash256.rs b/src/hash256.rs
index e8d6260..5df85d9 100644
--- a/src/hash256.rs
+++ b/src/hash256.rs
@@ -17,14 +17,14 @@ specific language governing permissions and limitations
 under the License.
 */
 
-const HASH256_H0: u32 = 0x6A09E667;
-const HASH256_H1: u32 = 0xBB67AE85;
-const HASH256_H2: u32 = 0x3C6EF372;
-const HASH256_H3: u32 = 0xA54FF53A;
-const HASH256_H4: u32 = 0x510E527F;
-const HASH256_H5: u32 = 0x9B05688C;
-const HASH256_H6: u32 = 0x1F83D9AB;
-const HASH256_H7: u32 = 0x5BE0CD19;
+const HASH256_H0: u32 = 0x6A09_E667;
+const HASH256_H1: u32 = 0xBB67_AE85;
+const HASH256_H2: u32 = 0x3C6E_F372;
+const HASH256_H3: u32 = 0xA54F_F53A;
+const HASH256_H4: u32 = 0x510E_527F;
+const HASH256_H5: u32 = 0x9B05_688C;
+const HASH256_H6: u32 = 0x1F83_D9AB;
+const HASH256_H7: u32 = 0x5BE0_CD19;
 
 const HASH256_K: [u32; 64] = [
     0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
diff --git a/src/lib.rs b/src/lib.rs
index 108057b..c68a165 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,18 +1,18 @@
 pub mod aes;
+#[cfg(target_pointer_width = "32")]
+#[path = "arch/arch32.rs"]
+pub mod arch;
+#[cfg(target_pointer_width = "64")]
+#[path = "arch/arch64.rs"]
+pub mod arch;
 pub mod gcm;
 pub mod hash256;
 pub mod hash384;
 pub mod hash512;
+pub mod nhs;
 pub mod rand;
 pub mod sha3;
-pub mod nhs;
 pub mod types;
-#[cfg(target_pointer_width = "32")]
-#[path = "arch/arch32.rs"]
-pub mod arch;
-#[cfg(target_pointer_width = "64")]
-#[path = "arch/arch64.rs"]
-pub mod arch;
 
 #[cfg(feature = "bls48")]
 #[path = "./"]
@@ -25,18 +25,18 @@ pub mod bls48 {
     pub mod rom;
 
     pub mod big;
+    pub mod bls256;
     pub mod dbig;
-    pub mod fp;
     pub mod ecp;
     pub mod ecp8;
+    pub mod fp;
+    pub mod fp16;
     pub mod fp2;
     pub mod fp4;
-    pub mod fp8;
-    pub mod fp16;
     pub mod fp48;
-    pub mod pair256;
+    pub mod fp8;
     pub mod mpin256;
-    pub mod bls256;
+    pub mod pair256;
 }
 
 #[cfg(feature = "bls461")]
@@ -50,16 +50,16 @@ pub mod bls461 {
     pub mod rom;
 
     pub mod big;
+    pub mod bls;
     pub mod dbig;
-    pub mod fp;
     pub mod ecp;
     pub mod ecp2;
+    pub mod fp;
+    pub mod fp12;
     pub mod fp2;
     pub mod fp4;
-    pub mod fp12;
-    pub mod pair;
     pub mod mpin;
-    pub mod bls;
+    pub mod pair;
 }
 
 #[cfg(feature = "bls383")]
@@ -73,16 +73,16 @@ pub mod bls383 {
     pub mod rom;
 
     pub mod big;
+    pub mod bls;
     pub mod dbig;
-    pub mod fp;
     pub mod ecp;
     pub mod ecp2;
+    pub mod fp;
+    pub mod fp12;
     pub mod fp2;
     pub mod fp4;
-    pub mod fp12;
-    pub mod pair;
     pub mod mpin;
-    pub mod bls;
+    pub mod pair;
 }
 
 #[cfg(feature = "bls381")]
@@ -96,16 +96,16 @@ pub mod bls381 {
     pub mod rom;
 
     pub mod big;
+    pub mod bls;
     pub mod dbig;
-    pub mod fp;
     pub mod ecp;
     pub mod ecp2;
+    pub mod fp;
+    pub mod fp12;
     pub mod fp2;
     pub mod fp4;
-    pub mod fp12;
-    pub mod pair;
     pub mod mpin;
-    pub mod bls;
+    pub mod pair;
 }
 
 #[cfg(feature = "fp512bn")]
@@ -119,16 +119,16 @@ pub mod fp512bn {
     pub mod rom;
 
     pub mod big;
+    pub mod bls;
     pub mod dbig;
-    pub mod fp;
     pub mod ecp;
     pub mod ecp2;
+    pub mod fp;
+    pub mod fp12;
     pub mod fp2;
     pub mod fp4;
-    pub mod fp12;
-    pub mod pair;
     pub mod mpin;
-    pub mod bls;
+    pub mod pair;
 }
 
 #[cfg(feature = "fp256bn")]
@@ -142,16 +142,16 @@ pub mod fp256bn {
     pub mod rom;
 
     pub mod big;
+    pub mod bls;
     pub mod dbig;
-    pub mod fp;
     pub mod ecp;
     pub mod ecp2;
+    pub mod fp;
+    pub mod fp12;
     pub mod fp2;
     pub mod fp4;
-    pub mod fp12;
-    pub mod pair;
     pub mod mpin;
-    pub mod bls;
+    pub mod pair;
 }
 
 #[cfg(feature = "bls24")]
@@ -165,17 +165,17 @@ pub mod bls24 {
     pub mod rom;
 
     pub mod big;
+    pub mod bls192;
     pub mod dbig;
+    pub mod ecp;
+    pub mod ecp4;
     pub mod fp;
     pub mod fp2;
+    pub mod fp24;
     pub mod fp4;
     pub mod fp8;
-    pub mod fp24;
-    pub mod ecp;
-    pub mod ecp4;
-    pub mod pair192;
     pub mod mpin192;
-    pub mod bls192;
+    pub mod pair192;
 }
 
 #[cfg(feature = "anssi")]
@@ -190,9 +190,9 @@ pub mod anssi {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "brainpool")]
@@ -207,9 +207,9 @@ pub mod brainpool {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "goldilocks")]
@@ -224,9 +224,9 @@ pub mod goldilocks {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "hifive")]
@@ -241,9 +241,9 @@ pub mod hifive {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nist256")]
@@ -258,9 +258,9 @@ pub mod nist256 {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nist384")]
@@ -275,9 +275,9 @@ pub mod nist384 {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nist521")]
@@ -292,9 +292,9 @@ pub mod nist521 {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nums256e")]
@@ -309,9 +309,9 @@ pub mod nums256e {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nums256w")]
@@ -326,9 +326,9 @@ pub mod nums256w {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nums384e")]
@@ -343,9 +343,9 @@ pub mod nums384e {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nums384w")]
@@ -360,9 +360,9 @@ pub mod nums384w {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nums512w")]
@@ -377,9 +377,9 @@ pub mod nums512w {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "nums512e")]
@@ -394,9 +394,9 @@ pub mod nums512e {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "secp256k1")]
@@ -411,9 +411,9 @@ pub mod secp256k1 {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "c25519")]
@@ -428,9 +428,9 @@ pub mod c25519 {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "c41417")]
@@ -445,9 +445,9 @@ pub mod c41417 {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "ed25519")]
@@ -462,9 +462,9 @@ pub mod ed25519 {
 
     pub mod big;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
+    pub mod fp;
 }
 
 #[cfg(feature = "bn254CX")]
@@ -478,17 +478,17 @@ pub mod bn254CX {
     pub mod rom;
 
     pub mod big;
+    pub mod bls;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
     pub mod ecp2;
+    pub mod fp;
+    pub mod fp12;
     pub mod fp2;
     pub mod fp4;
-    pub mod fp12;
-    pub mod pair;
     pub mod mpin;
-    pub mod bls;
+    pub mod pair;
 }
 
 #[cfg(feature = "bn254")]
@@ -502,60 +502,60 @@ pub mod bn254 {
     pub mod rom;
 
     pub mod big;
+    pub mod bls;
     pub mod dbig;
-    pub mod fp;
-    pub mod ecp;
     pub mod ecdh;
+    pub mod ecp;
     pub mod ecp2;
+    pub mod fp;
+    pub mod fp12;
     pub mod fp2;
     pub mod fp4;
-    pub mod fp12;
-    pub mod pair;
     pub mod mpin;
-    pub mod bls;
+    pub mod pair;
 }
 
 #[cfg(feature = "rsa2048")]
 #[path = "./"]
 pub mod rsa2048 {
+    pub mod big;
+    pub mod dbig;
+    pub mod ff;
     #[cfg(target_pointer_width = "32")]
     #[path = "roms/rom_rsa2048_32.rs"]
     pub mod rom;
     #[cfg(target_pointer_width = "64")]
     #[path = "roms/rom_rsa2048_64.rs"]
     pub mod rom;
-    pub mod big;
-    pub mod dbig;
-    pub mod ff;
     pub mod rsa;
 }
 
 #[cfg(feature = "rsa3072")]
 #[path = "./"]
 pub mod rsa3072 {
+    pub mod big;
+    pub mod dbig;
+    pub mod ff;
     #[cfg(target_pointer_width = "32")]
     #[path = "roms/rom_rsa3072_32.rs"]
     pub mod rom;
     #[cfg(target_pointer_width = "64")]
     #[path = "roms/rom_rsa3072_64.rs"]
     pub mod rom;
-    pub mod big;
-    pub mod dbig;
-    pub mod ff;
     pub mod rsa;
 }
 
 #[cfg(feature = "rsa4096")]
 #[path = "./"]
 pub mod rsa4096 {
+    pub mod big;
+    pub mod dbig;
+    pub mod ff;
     #[cfg(target_pointer_width = "32")]
     #[path = "roms/rom_rsa4096_32.rs"]
     mod rom;
     #[cfg(target_pointer_width = "64")]
     #[path = "roms/rom_rsa4096_64.rs"]
     mod rom;
-    pub mod big;
-    pub mod dbig;
-    pub mod ff;
     pub mod rsa;
-}
\ No newline at end of file
+}
diff --git a/src/mpin.rs b/src/mpin.rs
index ba272d1..425d03e 100644
--- a/src/mpin.rs
+++ b/src/mpin.rs
@@ -20,21 +20,20 @@ under the License.
 use std::time::SystemTime;
 use std::time::UNIX_EPOCH;
 
+use super::big;
+use super::big::Big;
 use super::ecp;
 use super::ecp::ECP;
 use super::ecp2::ECP2;
-use super::fp4::FP4;
 use super::fp12::FP12;
-use super::big::Big;
+use super::fp4::FP4;
 use super::pair;
-use super::big;
 use super::rom;
 
-use rand::RAND;
 use hash256::HASH256;
 use hash384::HASH384;
 use hash512::HASH512;
-
+use rand::RAND;
 
 /* MPIN API Functions */
 
@@ -196,8 +195,8 @@ pub fn today() -> usize {
 fn emap(u: &Big, cb: isize) -> ECP {
     let mut P: ECP;
     let mut x = Big::new_copy(u);
-    let mut p = Big::new_ints(&rom::MODULUS);
-    x.rmod(&mut p);
+    let p = Big::new_ints(&rom::MODULUS);
+    x.rmod(&p);
     loop {
         P = ECP::new_bigint(&x, cb);
         if !P.is_infinity() {
@@ -260,8 +259,8 @@ pub fn encoding(rng: &mut RAND, e: &mut [u8]) -> isize {
     let mut su = rng.getbyte() as isize;
     su %= 2;
 
-    let mut W = emap(&mut u, su);
-    P.sub(&mut W);
+    let W = emap(&u, su);
+    P.sub(&W);
     let sv = P.gets();
     let rn = unmap(&mut v, &mut P);
     let mut m = rng.getbyte() as isize;
@@ -299,9 +298,9 @@ pub fn decoding(d: &mut [u8]) -> isize {
 
     let su = (d[0] & 1) as isize;
     let sv = ((d[0] >> 1) & 1) as isize;
-    let mut W = emap(&mut u, su);
-    let mut P = emap(&mut v, sv);
-    P.add(&mut W);
+    let W = emap(&u, su);
+    let mut P = emap(&v, sv);
+    P.add(&W);
     u = P.getx();
     v = P.gety();
     d[0] = 0x04;
@@ -321,13 +320,13 @@ pub fn decoding(d: &mut [u8]) -> isize {
 #[allow(non_snake_case)]
 pub fn recombine_g1(r1: &[u8], r2: &[u8], r: &mut [u8]) -> isize {
     let mut P = ECP::frombytes(&r1);
-    let mut Q = ECP::frombytes(&r2);
+    let Q = ECP::frombytes(&r2);
 
     if P.is_infinity() || Q.is_infinity() {
         return INVALID_POINT;
     }
 
-    P.add(&mut Q);
+    P.add(&Q);
 
     P.tobytes(r, false);
     return 0;
@@ -337,13 +336,13 @@ pub fn recombine_g1(r1: &[u8], r2: &[u8], r: &mut [u8]) -> isize {
 #[allow(non_snake_case)]
 pub fn recombine_g2(w1: &[u8], w2: &[u8], w: &mut [u8]) -> isize {
     let mut P = ECP2::frombytes(&w1);
-    let mut Q = ECP2::frombytes(&w2);
+    let Q = ECP2::frombytes(&w2);
 
     if P.is_infinity() || Q.is_infinity() {
         return INVALID_POINT;
     }
 
-    P.add(&mut Q);
+    P.add(&Q);
 
     P.tobytes(w);
     return 0;
@@ -362,8 +361,8 @@ pub fn random_generate(rng: &mut RAND, s: &mut [u8]) -> isize {
 pub fn get_server_secret(s: &[u8], sst: &mut [u8]) -> isize {
     let mut Q = ECP2::generator();
 
-    let mut sc = Big::frombytes(s);
-    Q = pair::g2mul(&mut Q, &mut sc);
+    let sc = Big::frombytes(s);
+    Q = pair::g2mul(&Q, &sc);
     Q.tobytes(sst);
     return 0;
 }
@@ -391,7 +390,7 @@ pub fn get_g1_multiple(
     } else {
         sx = Big::frombytes(x);
     }
-    let mut P: ECP;
+    let P: ECP;
 
     if typ == 0 {
         P = ECP::frombytes(g);
@@ -402,7 +401,7 @@ pub fn get_g1_multiple(
         P = ECP::mapit(g)
     }
 
-    pair::g1mul(&mut P, &mut sx).tobytes(w, false);
+    pair::g1mul(&P, &mut sx).tobytes(w, false);
     return 0;
 }
 
@@ -437,7 +436,7 @@ pub fn extract_factor(
     let mut R = ECP::mapit(&h);
 
     R = R.pinmul(factor, facbits);
-    P.sub(&mut R);
+    P.sub(&R);
 
     P.tobytes(token, false);
 
@@ -463,7 +462,7 @@ pub fn restore_factor(
     let mut R = ECP::mapit(&h);
 
     R = R.pinmul(factor, facbits);
-    P.add(&mut R);
+    P.add(&R);
 
     P.tobytes(token, false);
 
@@ -499,10 +498,10 @@ pub fn get_client_permit(sha: usize, date: usize, s: &[u8], cid: &[u8], ctt: &mu
     const RM: usize = big::MODBYTES as usize;
     let mut h: [u8; RM] = [0; RM];
     hashit(sha, date, cid, &mut h);
-    let mut P = ECP::mapit(&h);
+    let P = ECP::mapit(&h);
 
     let mut sc = Big::frombytes(s);
-    pair::g1mul(&mut P, &mut sc).tobytes(ctt, false);
+    pair::g1mul(&P, &mut sc).tobytes(ctt, false);
     return 0;
 }
 
@@ -544,7 +543,7 @@ pub fn client_1(
     }
 
     let mut W = P.pinmul((pin as i32) % MAXPIN, PBLEN);
-    T.add(&mut W);
+    T.add(&W);
     if date != 0 {
         if let Some(rpermit) = permit {
             W = ECP::frombytes(&rpermit);
@@ -552,25 +551,25 @@ pub fn client_1(
         if W.is_infinity() {
             return INVALID_POINT;
         }
-        T.add(&mut W);
+        T.add(&W);
         let mut h2: [u8; RM] = [0; RM];
         hashit(sha, date, &h, &mut h2);
         W = ECP::mapit(&h2);
         if let Some(mut rxid) = xid {
-            P = pair::g1mul(&mut P, &mut sx);
+            P = pair::g1mul(&P, &mut sx);
             P.tobytes(&mut rxid, false);
-            W = pair::g1mul(&mut W, &mut sx);
-            P.add(&mut W);
+            W = pair::g1mul(&W, &mut sx);
+            P.add(&W);
         } else {
-            P.add(&mut W);
-            P = pair::g1mul(&mut P, &mut sx);
+            P.add(&W);
+            P = pair::g1mul(&P, &mut sx);
         }
         if let Some(mut rxcid) = xcid {
             P.tobytes(&mut rxcid, false)
         }
     } else {
         if let Some(mut rxid) = xid {
-            P = pair::g1mul(&mut P, &mut sx);
+            P = pair::g1mul(&P, &mut sx);
             P.tobytes(&mut rxid, false);
         }
     }
@@ -593,8 +592,8 @@ pub fn server_1(sha: usize, date: usize, cid: &[u8], hid: &mut [u8], htid: Optio
     if date != 0 {
         let mut h2: [u8; RM] = [0; RM];
         hashit(sha, date, &h, &mut h2);
-        let mut R = ECP::mapit(&h2);
-        P.add(&mut R);
+        let R = ECP::mapit(&h2);
+        P.add(&R);
         if let Some(rhtid) = htid {
             P.tobytes(rhtid, false);
         }
@@ -604,7 +603,7 @@ pub fn server_1(sha: usize, date: usize, cid: &[u8], hid: &mut [u8], htid: Optio
 /* Implement step 2 on client side of MPin protocol */
 #[allow(non_snake_case)]
 pub fn client_2(x: &[u8], y: &[u8], sec: &mut [u8]) -> isize {
-    let mut r = Big::new_ints(&rom::CURVE_ORDER);
+    let r = Big::new_ints(&rom::CURVE_ORDER);
     let mut P = ECP::frombytes(sec);
     if P.is_infinity() {
         return INVALID_POINT;
@@ -613,9 +612,9 @@ pub fn client_2(x: &[u8], y: &[u8], sec: &mut [u8]) -> isize {
     let mut px = Big::frombytes(x);
     let py = Big::frombytes(y);
     px.add(&py);
-    px.rmod(&mut r);
+    px.rmod(&r);
 
-    P = pair::g1mul(&mut P, &mut px);
+    P = pair::g1mul(&P, &mut px);
     P.neg();
     P.tobytes(sec, false);
 
@@ -638,8 +637,8 @@ pub fn get_y(sha: usize, timevalue: usize, xcid: &[u8], y: &mut [u8]) {
     hashit(sha, timevalue, xcid, &mut h);
 
     let mut sy = Big::frombytes(&h);
-    let mut q = Big::new_ints(&rom::CURVE_ORDER);
-    sy.rmod(&mut q);
+    let q = Big::new_ints(&rom::CURVE_ORDER);
+    sy.rmod(&q);
     sy.tobytes(y);
 }
 
@@ -698,8 +697,8 @@ pub fn server_2(
         return INVALID_POINT;
     }
 
-    P = pair::g1mul(&mut P, &mut sy);
-    P.add(&mut R);
+    P = pair::g1mul(&P, &mut sy);
+    P.add(&R);
     R = ECP::frombytes(&msec);
     if R.is_infinity() {
         return INVALID_POINT;
@@ -724,8 +723,8 @@ pub fn server_2(
                         if R.is_infinity() {
                             return INVALID_POINT;
                         }
-                        P = pair::g1mul(&mut P, &mut sy);
-                        P.add(&mut R); //P.affine();
+                        P = pair::g1mul(&P, &mut sy);
+                        P.add(&R); //P.affine();
                     }
                     g = pair::ate(&Q, &P);
                     g = pair::fexp(&g);
@@ -760,7 +759,7 @@ pub fn kangaroo(e: &[u8], f: &[u8]) -> isize {
     let mut i: usize;
     for _ in 0..TRAP {
         i = (t.geta().geta().geta().lastbits(20) % (TS as isize)) as usize;
-        t.mul(&mut table[i]);
+        t.mul(&table[i]);
         dn += distance[i];
     }
     gf.copy(&t);
@@ -774,13 +773,13 @@ pub fn kangaroo(e: &[u8], f: &[u8]) -> isize {
             break;
         }
         i = (ge.geta().geta().geta().lastbits(20) % (TS as isize)) as usize;
-        ge.mul(&mut table[i]);
+        ge.mul(&table[i]);
         dm += distance[i];
-        if ge.equals(&mut t) {
+        if ge.equals(&t) {
             res = dm - dn;
             break;
         }
-        if ge.equals(&mut gf) {
+        if ge.equals(&gf) {
             res = dn - dm;
             break;
         }
@@ -873,17 +872,17 @@ pub fn client_key(
         return INVALID_POINT;
     }
 
-    W = pair::g1mul(&mut W, &mut x);
+    W = pair::g1mul(&W, &mut x);
 
-    let mut r = Big::new_ints(&rom::CURVE_ORDER);
+    let r = Big::new_ints(&rom::CURVE_ORDER);
 
     z.add(&h); //new
-    z.rmod(&mut r);
+    z.rmod(&r);
 
     g2.pinpow(pin as i32, PBLEN);
-    g1.mul(&mut g2);
+    g1.mul(&g2);
 
-    let mut c = g1.compow(&z, &mut r);
+    let mut c = g1.compow(&z, &r);
 
     hash(sha, &mut c, &mut W, ck);
 
@@ -930,10 +929,10 @@ pub fn server_key(
 
     let mut w = Big::frombytes(&w);
     let mut h = Big::frombytes(&h);
-    A = pair::g1mul(&mut A, &mut h); // new
-    R.add(&mut A);
+    A = pair::g1mul(&A, &mut h); // new
+    R.add(&A);
 
-    U = pair::g1mul(&mut U, &mut w);
+    U = pair::g1mul(&U, &mut w);
     let mut g = pair::ate(&sQ, &R);
     g = pair::fexp(&g);
 
diff --git a/src/mpin192.rs b/src/mpin192.rs
index e133dcd..63970d1 100644
--- a/src/mpin192.rs
+++ b/src/mpin192.rs
@@ -20,21 +20,20 @@ under the License.
 use std::time::SystemTime;
 use std::time::UNIX_EPOCH;
 
+use super::big;
+use super::big::Big;
 use super::ecp;
 use super::ecp::ECP;
 use super::ecp4::ECP4;
-use super::fp8::FP8;
 use super::fp24::FP24;
-use super::big::Big;
+use super::fp8::FP8;
 use super::pair192;
-use super::big;
 use super::rom;
 
-use rand::RAND;
 use hash256::HASH256;
 use hash384::HASH384;
 use hash512::HASH512;
-
+use rand::RAND;
 
 /* MPIN API Functions */
 
diff --git a/src/mpin256.rs b/src/mpin256.rs
index 4892ff5..5f9cee9 100644
--- a/src/mpin256.rs
+++ b/src/mpin256.rs
@@ -20,20 +20,20 @@ under the License.
 use std::time::SystemTime;
 use std::time::UNIX_EPOCH;
 
+use super::big;
+use super::big::Big;
 use super::ecp;
 use super::ecp::ECP;
 use super::ecp8::ECP8;
 use super::fp16::FP16;
 use super::fp48::FP48;
-use super::big::Big;
 use super::pair256;
-use super::big;
 use super::rom;
 
-use rand::RAND;
 use hash256::HASH256;
 use hash384::HASH384;
 use hash512::HASH512;
+use rand::RAND;
 
 /* MPIN API Functions */
 
diff --git a/src/nhs.rs b/src/nhs.rs
index 7f2f605..dda49b0 100644
--- a/src/nhs.rs
+++ b/src/nhs.rs
@@ -313,7 +313,7 @@ fn encode(key: &[u8], poly: &mut [i32]) {
         let mut kj = key[j];
         j += 1;
         for _ in 0..8 {
-            let b = (kj & 1) as i32;
+            let b = i32::from(kj & 1);
             poly[i] = b * q2;
             poly[i + 256] = b * q2;
             poly[i + 512] = b * q2;
@@ -359,13 +359,13 @@ fn parse(seed: &[u8], poly: &mut [i32]) {
 
     let mut j = 0;
     for i in 0..DEGREE {
-        let mut n = (hash[j] & 0x7f) as i32;
+        let mut n = i32::from(hash[j] & 0x7f);
         n <<= 8;
-        n += (hash[j + 1]) as i32;
+        n += i32::from(hash[j + 1]);
         n <<= 8;
-        n += (hash[j + 2]) as i32;
+        n += i32::from(hash[j + 2]);
         n <<= 8;
-        n += (hash[j + 3]) as i32;
+        n += i32::from(hash[j + 3]);
         j += 4;
         poly[i] = nres(n);
         //poly[i]=modmul(n,ONE); // reduce 31-bit random number mod q
diff --git a/src/pair.rs b/src/pair.rs
index b85efaa..36c9045 100644
--- a/src/pair.rs
+++ b/src/pair.rs
@@ -17,19 +17,18 @@ specific language governing permissions and limitations
 under the License.
 */
 
-
-use super::fp::FP;
+use super::big::Big;
+use super::dbig::DBig;
+use super::ecp;
 use super::ecp::ECP;
-use super::fp2::FP2;
 use super::ecp2::ECP2;
-use super::fp4::FP4;
+use super::fp::FP;
 use super::fp12;
 use super::fp12::FP12;
-use super::big::Big;
-use super::dbig::DBig;
-use super::ecp;
+use super::fp2::FP2;
+use super::fp4::FP4;
 use super::rom;
-use types::{SexticTwist, CurvePairingType, SignOfX};
+use types::{CurvePairingType, SexticTwist, SignOfX};
 
 #[allow(non_snake_case)]
 fn linedbl(A: &mut ECP2, qx: &FP, qy: &FP) -> FP12 {
@@ -56,10 +55,10 @@ fn linedbl(A: &mut ECP2, qx: &FP, qy: &FP) -> FP12 {
 
     let sb = 3 * rom::CURVE_B_I;
     zz.imul(sb);
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         zz.div_ip2();
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         zz.mul_ip();
         zz.dbl();
         yz.mul_ip();
@@ -73,15 +72,15 @@ fn linedbl(A: &mut ECP2, qx: &FP, qy: &FP) -> FP12 {
     zz.norm(); // 3b.Z^2-Y^2
 
     a.copy(&FP4::new_fp2s(&yz, &zz)); // -2YZ.Ys | 3b.Z^2-Y^2 | 3X^2.Xs
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         b.copy(&FP4::new_fp2(&xx)); // L(0,1) | L(0,0) | L(1,0)
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         c.copy(&FP4::new_fp2(&xx));
         c.times_i();
     }
     A.dbl();
-    let mut res= FP12::new_fp4s(&a, &b, &c);
+    let mut res = FP12::new_fp4s(&a, &b, &c);
     res.settype(fp12::SPARSER);
     return res;
 }
@@ -107,7 +106,7 @@ fn lineadd(A: &mut ECP2, B: &ECP2, qx: &FP, qy: &FP) -> FP12 {
 
     t1.copy(&x1); // T1=X1-Z1.X2
     x1.pmul(qy); // X1=(X1-Z1.X2).Ys
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         x1.mul_ip();
         x1.norm();
     }
@@ -123,27 +122,27 @@ fn lineadd(A: &mut ECP2, B: &ECP2, qx: &FP, qy: &FP) -> FP12 {
     y1.norm(); // Y1=-(Y1-Z1.Y2).Xs
 
     a.copy(&FP4::new_fp2s(&x1, &t2)); // (X1-Z1.X2).Ys  |  (Y1-Z1.Y2).X2 - (X1-Z1.X2).Y2  | - (Y1-Z1.Y2).Xs
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         b.copy(&FP4::new_fp2(&y1));
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         c.copy(&FP4::new_fp2(&y1));
         c.times_i();
     }
 
     A.add(B);
-    let mut res= FP12::new_fp4s(&a, &b, &c);
+    let mut res = FP12::new_fp4s(&a, &b, &c);
     res.settype(fp12::SPARSER);
     return res;
 }
 
 /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */
 #[allow(non_snake_case)]
-fn lbits(n3: &mut Big,n: &mut Big) -> usize {
+fn lbits(n3: &mut Big, n: &mut Big) -> usize {
     n.copy(&Big::new_ints(&rom::CURVE_BNX));
-    if ecp::CURVE_PAIRING_TYPE==CurvePairingType::BN {
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
         n.pmul(6);
-        if ecp::SIGN_OF_X==SignOfX::POSITIVEX {
+        if ecp::SIGN_OF_X == SignOfX::PositiveX {
             n.inc(2);
         } else {
             n.dec(2);
@@ -159,18 +158,18 @@ fn lbits(n3: &mut Big,n: &mut Big) -> usize {
 /* prepare for multi-pairing */
 pub fn initmp() -> [FP12; rom::ATE_BITS] {
     let r: [FP12; rom::ATE_BITS] = [FP12::new_int(1); rom::ATE_BITS];
-    return r
+    return r;
 }
 
 /* basic Miller loop */
-pub fn miller(r:&[FP12]) -> FP12 {
-    let mut res=FP12::new_int(1);
+pub fn miller(r: &[FP12]) -> FP12 {
+    let mut res = FP12::new_int(1);
     for i in (1..rom::ATE_BITS).rev() {
         res.sqr();
         res.ssmul(&r[i]);
     }
 
-    if ecp::SIGN_OF_X==SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         res.conj();
     }
     res.ssmul(&r[0]);
@@ -179,14 +178,13 @@ pub fn miller(r:&[FP12]) -> FP12 {
 
 /* Accumulate another set of line functions for n-pairing */
 #[allow(non_snake_case)]
-pub fn another(r:&mut [FP12],P1: &ECP2,Q1: &ECP) {
+pub fn another(r: &mut [FP12], P1: &ECP2, Q1: &ECP) {
     let mut f = FP2::new_bigs(&Big::new_ints(&rom::FRA), &Big::new_ints(&rom::FRB));
     let mut n = Big::new();
     let mut n3 = Big::new();
     let mut K = ECP2::new();
 
-
-// P is needed in affine form for line function, Q for (Qx,Qy) extraction
+    // P is needed in affine form for line function, Q for (Qx,Qy) extraction
     let mut P = ECP2::new();
     P.copy(P1);
     P.affine();
@@ -194,8 +192,8 @@ pub fn another(r:&mut [FP12],P1: &ECP2,Q1: &ECP) {
     Q.copy(Q1);
     Q.affine();
 
-    if ecp::CURVE_PAIRING_TYPE==CurvePairingType::BN {
-        if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE {
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             f.inverse();
             f.norm();
         }
@@ -210,36 +208,36 @@ pub fn another(r:&mut [FP12],P1: &ECP2,Q1: &ECP) {
     NP.copy(&P);
     NP.neg();
 
-    let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
-    for i in (1..nb-1).rev() {
-        let mut lv=linedbl(&mut A,&qx,&qy);
+    for i in (1..nb - 1).rev() {
+        let mut lv = linedbl(&mut A, &qx, &qy);
 
-	let bt=n3.bit(i)-n.bit(i);
-        if bt==1 {
-            let lv2=lineadd(&mut A,&P,&qx,&qy);
+        let bt = n3.bit(i) - n.bit(i);
+        if bt == 1 {
+            let lv2 = lineadd(&mut A, &P, &qx, &qy);
             lv.smul(&lv2);
         }
-        if bt==-1 {
-            let lv2=lineadd(&mut A,&NP,&qx,&qy);
+        if bt == -1 {
+            let lv2 = lineadd(&mut A, &NP, &qx, &qy);
             lv.smul(&lv2);
         }
         r[i].ssmul(&lv);
     }
 
-/* R-ate fixup required for BN curves */
-    if ecp::CURVE_PAIRING_TYPE==CurvePairingType::BN {
-        if ecp::SIGN_OF_X==SignOfX::NEGATIVEX {
+    /* R-ate fixup required for BN curves */
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             A.neg();
         }
         K.copy(&P);
         K.frob(&f);
-        let mut lv=lineadd(&mut A,&K,&qx,&qy);
+        let mut lv = lineadd(&mut A, &K, &qx, &qy);
         K.frob(&f);
         K.neg();
-        let lv2=lineadd(&mut A,&K,&qx,&qy);
+        let lv2 = lineadd(&mut A, &K, &qx, &qy);
         lv.smul(&lv2);
-	r[0].ssmul(&lv);
+        r[0].ssmul(&lv);
     }
 }
 
@@ -251,8 +249,8 @@ pub fn ate(P1: &ECP2, Q1: &ECP) -> FP12 {
     let mut n3 = Big::new();
     let mut K = ECP2::new();
 
-    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             f.inverse();
             f.norm();
         }
@@ -275,7 +273,7 @@ pub fn ate(P1: &ECP2, Q1: &ECP) -> FP12 {
     NP.copy(&P);
     NP.neg();
 
-    let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
     for i in (1..nb - 1).rev() {
         r.sqr();
@@ -292,14 +290,14 @@ pub fn ate(P1: &ECP2, Q1: &ECP) -> FP12 {
         r.ssmul(&lv);
     }
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         r.conj();
     }
 
     /* R-ate fixup required for BN curves */
 
-    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             A.neg();
         }
 
@@ -310,7 +308,7 @@ pub fn ate(P1: &ECP2, Q1: &ECP) -> FP12 {
         K.frob(&f);
         K.neg();
         let lv2 = lineadd(&mut A, &K, &qx, &qy);
-	lv.smul(&lv2);
+        lv.smul(&lv2);
         r.ssmul(&lv);
     }
 
@@ -325,8 +323,8 @@ pub fn ate2(P1: &ECP2, Q1: &ECP, R1: &ECP2, S1: &ECP) -> FP12 {
     let mut n3 = Big::new();
     let mut K = ECP2::new();
 
-    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             f.inverse();
             f.norm();
         }
@@ -365,36 +363,36 @@ pub fn ate2(P1: &ECP2, Q1: &ECP, R1: &ECP2, S1: &ECP) -> FP12 {
     NR.copy(&R);
     NR.neg();
 
-    let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
     for i in (1..nb - 1).rev() {
         r.sqr();
         let mut lv = linedbl(&mut A, &qx, &qy);
         let lv2 = linedbl(&mut B, &sx, &sy);
-	lv.smul(&lv2);
+        lv.smul(&lv2);
         r.ssmul(&lv);
         let bt = n3.bit(i) - n.bit(i);
         if bt == 1 {
             lv = lineadd(&mut A, &P, &qx, &qy);
             let lv2 = lineadd(&mut B, &R, &sx, &sy);
-	    lv.smul(&lv2);
+            lv.smul(&lv2);
             r.ssmul(&lv);
         }
         if bt == -1 {
             lv = lineadd(&mut A, &NP, &qx, &qy);
             let lv2 = lineadd(&mut B, &NR, &sx, &sy);
-	    lv.smul(&lv2);
+            lv.smul(&lv2);
             r.ssmul(&lv);
         }
     }
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         r.conj();
     }
 
-    /* R-ate fixup */
-    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    // R-ate fixup
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             A.neg();
             B.neg();
         }
@@ -405,7 +403,7 @@ pub fn ate2(P1: &ECP2, Q1: &ECP, R1: &ECP2, S1: &ECP) -> FP12 {
         K.frob(&f);
         K.neg();
         let mut lv2 = lineadd(&mut A, &K, &qx, &qy);
-	lv.smul(&lv2);
+        lv.smul(&lv2);
         r.ssmul(&lv);
 
         K.copy(&R);
@@ -415,21 +413,20 @@ pub fn ate2(P1: &ECP2, Q1: &ECP, R1: &ECP2, S1: &ECP) -> FP12 {
         K.frob(&f);
         K.neg();
         lv2 = lineadd(&mut B, &K, &sx, &sy);
-	lv.smul(&lv2);
+        lv.smul(&lv2);
         r.ssmul(&lv);
-
     }
 
     return r;
 }
 
-/* final exponentiation - keep separate for multi-pairings and to avoid thrashing stack */
+// final exponentiation - keep separate for multi-pairings and to avoid thrashing stack
 pub fn fexp(m: &FP12) -> FP12 {
     let f = FP2::new_bigs(&Big::new_ints(&rom::FRA), &Big::new_ints(&rom::FRB));
     let mut x = Big::new_ints(&rom::CURVE_BNX);
     let mut r = FP12::new_copy(m);
 
-    /* Easy part of final exp */
+    // Easy part of final exp
     let mut lv = FP12::new_copy(&r);
     lv.inverse();
     r.conj();
@@ -439,13 +436,13 @@ pub fn fexp(m: &FP12) -> FP12 {
     r.frob(&f);
     r.frob(&f);
     r.mul(&lv);
-//    if r.isunity() {
-//	r.zero();
-//	return r;
-//    }
+    //    if r.isunity() {
+    //	r.zero();
+    //	return r;
+    //    }
 
     /* Hard part of final exp */
-    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
         lv.copy(&r);
         lv.frob(&f);
         let mut x0 = FP12::new_copy(&lv);
@@ -455,22 +452,22 @@ pub fn fexp(m: &FP12) -> FP12 {
         x0.frob(&f);
         let mut x1 = FP12::new_copy(&r);
         x1.conj();
-        let mut x4 = r.pow(&mut x);
-        if ecp::SIGN_OF_X == SignOfX::POSITIVEX {
+        let mut x4 = r.pow(&x);
+        if ecp::SIGN_OF_X == SignOfX::PositiveX {
             x4.conj();
         }
 
         let mut x3 = FP12::new_copy(&x4);
         x3.frob(&f);
 
-        let mut x2 = x4.pow(&mut x);
-        if ecp::SIGN_OF_X == SignOfX::POSITIVEX {
+        let mut x2 = x4.pow(&x);
+        if ecp::SIGN_OF_X == SignOfX::PositiveX {
             x2.conj();
         }
         let mut x5 = FP12::new_copy(&x2);
         x5.conj();
-        lv = x2.pow(&mut x);
-        if ecp::SIGN_OF_X == SignOfX::POSITIVEX {
+        lv = x2.pow(&x);
+        if ecp::SIGN_OF_X == SignOfX::PositiveX {
             lv.conj();
         }
         x2.frob(&f);
@@ -505,13 +502,13 @@ pub fn fexp(m: &FP12) -> FP12 {
 
         let mut y0 = FP12::new_copy(&r);
         y0.usqr();
-        let mut y1 = y0.pow(&mut x);
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        let mut y1 = y0.pow(&x);
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             y1.conj();
         }
         x.fshr(1);
-        let mut y2 = y1.pow(&mut x);
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        let mut y2 = y1.pow(&x);
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             y2.conj();
         }
         x.fshl(1);
@@ -522,12 +519,12 @@ pub fn fexp(m: &FP12) -> FP12 {
         y1.conj();
         y1.mul(&y2);
 
-        y2 = y1.pow(&mut x);
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        y2 = y1.pow(&x);
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             y2.conj();
         }
-        y3 = y2.pow(&mut x);
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        y3 = y2.pow(&x);
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             y3.conj();
         }
         y1.conj();
@@ -541,8 +538,8 @@ pub fn fexp(m: &FP12) -> FP12 {
         y2.frob(&f);
         y1.mul(&y2);
 
-        y2 = y3.pow(&mut x);
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        y2 = y3.pow(&x);
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             y2.conj();
         }
         y2.mul(&y0);
@@ -562,7 +559,7 @@ pub fn fexp(m: &FP12) -> FP12 {
 /* GLV method */
 fn glv(e: &Big) -> [Big; 2] {
     let mut u: [Big; 2] = [Big::new(), Big::new()];
-    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
         let mut t = Big::new();
         let q = Big::new_ints(&rom::CURVE_ORDER);
         let mut v: [Big; 2] = [Big::new(), Big::new()];
@@ -576,7 +573,7 @@ fn glv(e: &Big) -> [Big; 2] {
         for i in 0..2 {
             for j in 0..2 {
                 t = Big::new_ints(&rom::CURVE_SB[j][i]);
-                t = Big::modmul(&mut v[j], &mut t, &q);
+                t = Big::modmul(&v[j], &t, &q);
                 u[i].add(&q);
                 u[i].sub(&t);
                 u[i].rmod(&q);
@@ -599,7 +596,7 @@ fn glv(e: &Big) -> [Big; 2] {
 /* Galbraith & Scott Method */
 pub fn gs(e: &Big) -> [Big; 4] {
     let mut u: [Big; 4] = [Big::new(), Big::new(), Big::new(), Big::new()];
-    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN {
+    if ecp::CURVE_PAIRING_TYPE == CurvePairingType::Bn {
         let mut t = Big::new();
         let q = Big::new_ints(&rom::CURVE_ORDER);
 
@@ -613,7 +610,7 @@ pub fn gs(e: &Big) -> [Big; 4] {
         for i in 0..4 {
             for j in 0..4 {
                 t = Big::new_ints(&rom::CURVE_BB[j][i]);
-                t = Big::modmul(&mut v[j], &mut t, &q);
+                t = Big::modmul(&v[j], &t, &q);
                 u[i].add(&q);
                 u[i].sub(&t);
                 u[i].rmod(&q);
@@ -629,11 +626,11 @@ pub fn gs(e: &Big) -> [Big; 4] {
             w.div(&x);
         }
         u[3].copy(&w);
-        if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+        if ecp::SIGN_OF_X == SignOfX::NegativeX {
             let mut t = Big::new();
-            t.copy(&Big::modneg(&mut u[1], &q));
+            t.copy(&Big::modneg(&u[1], &q));
             u[1].copy(&t);
-            t.copy(&Big::modneg(&mut u[3], &q));
+            t.copy(&Big::modneg(&u[3], &q));
             u[3].copy(&t);
         }
     }
@@ -655,7 +652,7 @@ pub fn g1mul(P: &ECP, e: &mut Big) -> ECP {
         Q.mulx(&mut cru);
 
         let mut np = u[0].nbits();
-        let mut t: Big = Big::modneg(&mut u[0], &q);
+        let mut t: Big = Big::modneg(&u[0], &q);
         let mut nn = t.nbits();
         if nn < np {
             u[0].copy(&t);
@@ -663,7 +660,7 @@ pub fn g1mul(P: &ECP, e: &mut Big) -> ECP {
         }
 
         np = u[1].nbits();
-        t = Big::modneg(&mut u[1], &q);
+        t = Big::modneg(&u[1], &q);
         nn = t.nbits();
         if nn < np {
             u[1].copy(&t);
@@ -671,7 +668,7 @@ pub fn g1mul(P: &ECP, e: &mut Big) -> ECP {
         }
         u[0].norm();
         u[1].norm();
-        R = R.mul2(&u[0], &mut Q, &u[1]);
+        R = R.mul2(&u[0], &Q, &u[1]);
     } else {
         R = P.mul(e);
     }
@@ -689,7 +686,7 @@ pub fn g2mul(P: &ECP2, e: &Big) -> ECP2 {
         let mut u = gs(e);
         let mut T = ECP2::new();
 
-        if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+        if ecp::SEXTIC_TWIST == SexticTwist::MType {
             f.inverse();
             f.norm();
         }
@@ -703,7 +700,7 @@ pub fn g2mul(P: &ECP2, e: &Big) -> ECP2 {
         }
         for i in 0..4 {
             let np = u[i].nbits();
-            t.copy(&Big::modneg(&mut u[i], &q));
+            t.copy(&Big::modneg(&u[i], &q));
             let nn = t.nbits();
             if nn < np {
                 u[i].copy(&t);
@@ -739,7 +736,7 @@ pub fn gtpow(d: &FP12, e: &Big) -> FP12 {
         }
         for i in 0..4 {
             let np = u[i].nbits();
-            t.copy(&Big::modneg(&mut u[i], &q));
+            t.copy(&Big::modneg(&u[i], &q));
             let nn = t.nbits();
             if nn < np {
                 u[i].copy(&t);
@@ -747,7 +744,7 @@ pub fn gtpow(d: &FP12, e: &Big) -> FP12 {
             }
             u[i].norm();
         }
-        r.copy(&FP12::pow4(&mut g, &u));
+        r.copy(&FP12::pow4(&g, &u));
     } else {
         r.copy(&d.pow(e));
     }
diff --git a/src/pair192.rs b/src/pair192.rs
index a7c2993..84a9f03 100644
--- a/src/pair192.rs
+++ b/src/pair192.rs
@@ -17,17 +17,16 @@ specific language governing permissions and limitations
 under the License.
 */
 
-
-use super::fp::FP;
+use super::big::Big;
+use super::ecp;
 use super::ecp::ECP;
-use super::fp2::FP2;
 use super::ecp4::ECP4;
-use super::fp4::FP4;
-use super::fp8::FP8;
+use super::fp::FP;
+use super::fp2::FP2;
 use super::fp24;
 use super::fp24::FP24;
-use super::big::Big;
-use super::ecp;
+use super::fp4::FP4;
+use super::fp8::FP8;
 use super::rom;
 use types::{SexticTwist, SignOfX};
 
@@ -56,10 +55,10 @@ fn linedbl(A: &mut ECP4, qx: &FP, qy: &FP) -> FP24 {
 
     let sb = 3 * rom::CURVE_B_I;
     zz.imul(sb);
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         zz.div_2i();
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         zz.times_i();
         zz.dbl();
         yz.times_i();
@@ -72,15 +71,15 @@ fn linedbl(A: &mut ECP4, qx: &FP, qy: &FP) -> FP24 {
     zz.norm(); // 3b.Z^2-Y^2
 
     a.copy(&FP8::new_fp4s(&yz, &zz)); // -2YZ.Ys | 3b.Z^2-Y^2 | 3X^2.Xs
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         b.copy(&FP8::new_fp4(&xx)); // L(0,1) | L(0,0) | L(1,0)
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         c.copy(&FP8::new_fp4(&xx));
         c.times_i();
     }
     A.dbl();
-    let mut res= FP24::new_fp8s(&a, &b, &c);
+    let mut res = FP24::new_fp8s(&a, &b, &c);
     res.settype(fp24::SPARSER);
     return res;
 }
@@ -106,7 +105,7 @@ fn lineadd(A: &mut ECP4, B: &ECP4, qx: &FP, qy: &FP) -> FP24 {
 
     t1.copy(&x1); // T1=X1-Z1.X2
     x1.qmul(qy); // X1=(X1-Z1.X2).Ys
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         x1.times_i();
     }
 
@@ -121,23 +120,23 @@ fn lineadd(A: &mut ECP4, B: &ECP4, qx: &FP, qy: &FP) -> FP24 {
     y1.norm(); // Y1=-(Y1-Z1.Y2).Xs
 
     a.copy(&FP8::new_fp4s(&x1, &t2)); // (X1-Z1.X2).Ys  |  (Y1-Z1.Y2).X2 - (X1-Z1.X2).Y2  | - (Y1-Z1.Y2).Xs
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         b.copy(&FP8::new_fp4(&y1));
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         c.copy(&FP8::new_fp4(&y1));
         c.times_i();
     }
 
     A.add(B);
-    let mut res= FP24::new_fp8s(&a, &b, &c);
+    let mut res = FP24::new_fp8s(&a, &b, &c);
     res.settype(fp24::SPARSER);
     return res;
 }
 
 /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */
 #[allow(non_snake_case)]
-fn lbits(n3: &mut Big,n: &mut Big) -> usize {
+fn lbits(n3: &mut Big, n: &mut Big) -> usize {
     n.copy(&Big::new_ints(&rom::CURVE_BNX));
     n3.copy(&n);
     n3.pmul(3);
@@ -148,18 +147,18 @@ fn lbits(n3: &mut Big,n: &mut Big) -> usize {
 /* prepare for multi-pairing */
 pub fn initmp() -> [FP24; rom::ATE_BITS] {
     let r: [FP24; rom::ATE_BITS] = [FP24::new_int(1); rom::ATE_BITS];
-    return r
+    return r;
 }
 
 /* basic Miller loop */
-pub fn miller(r:&[FP24]) -> FP24 {
-    let mut res=FP24::new_int(1);
+pub fn miller(r: &[FP24]) -> FP24 {
+    let mut res = FP24::new_int(1);
     for i in (1..rom::ATE_BITS).rev() {
         res.sqr();
         res.ssmul(&r[i]);
     }
 
-    if ecp::SIGN_OF_X==SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         res.conj();
     }
     res.ssmul(&r[0]);
@@ -168,11 +167,11 @@ pub fn miller(r:&[FP24]) -> FP24 {
 
 /* Accumulate another set of line functions for n-pairing */
 #[allow(non_snake_case)]
-pub fn another(r:&mut [FP24],P1: &ECP4,Q1: &ECP) {
+pub fn another(r: &mut [FP24], P1: &ECP4, Q1: &ECP) {
     let mut n = Big::new();
     let mut n3 = Big::new();
 
-// P is needed in affine form for line function, Q for (Qx,Qy) extraction
+    // P is needed in affine form for line function, Q for (Qx,Qy) extraction
     let mut P = ECP4::new();
     P.copy(P1);
     P.affine();
@@ -189,18 +188,18 @@ pub fn another(r:&mut [FP24],P1: &ECP4,Q1: &ECP) {
     NP.copy(&P);
     NP.neg();
 
-    let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
-    for i in (1..nb-1).rev() {
-        let mut lv=linedbl(&mut A,&qx,&qy);
+    for i in (1..nb - 1).rev() {
+        let mut lv = linedbl(&mut A, &qx, &qy);
 
-	let bt=n3.bit(i)-n.bit(i);
-        if bt==1 {
-            let lv2=lineadd(&mut A,&P,&qx,&qy);
+        let bt = n3.bit(i) - n.bit(i);
+        if bt == 1 {
+            let lv2 = lineadd(&mut A, &P, &qx, &qy);
             lv.smul(&lv2);
         }
-        if bt==-1 {
-            let lv2=lineadd(&mut A,&NP,&qx,&qy);
+        if bt == -1 {
+            let lv2 = lineadd(&mut A, &NP, &qx, &qy);
             lv.smul(&lv2);
         }
         r[i].ssmul(&lv);
@@ -231,7 +230,7 @@ pub fn ate(P1: &ECP4, Q1: &ECP) -> FP24 {
     NP.copy(&P);
     NP.neg();
 
-    let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
     for i in (1..nb - 1).rev() {
         r.sqr();
@@ -250,7 +249,7 @@ pub fn ate(P1: &ECP4, Q1: &ECP) -> FP24 {
         r.ssmul(&lv);
     }
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         r.conj();
     }
 
@@ -296,30 +295,30 @@ pub fn ate2(P1: &ECP4, Q1: &ECP, R1: &ECP4, S1: &ECP) -> FP24 {
     NR.copy(&R);
     NR.neg();
 
-    let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
     for i in (1..nb - 1).rev() {
         r.sqr();
         let mut lv = linedbl(&mut A, &qx, &qy);
         let lv2 = linedbl(&mut B, &sx, &sy);
-	lv.smul(&lv2);
+        lv.smul(&lv2);
         r.ssmul(&lv);
         let bt = n3.bit(i) - n.bit(i);
         if bt == 1 {
             lv = lineadd(&mut A, &P, &qx, &qy);
             let lv2 = lineadd(&mut B, &R, &sx, &sy);
-	    lv.smul(&lv2);
+            lv.smul(&lv2);
             r.ssmul(&lv);
         }
         if bt == -1 {
             lv = lineadd(&mut A, &NP, &qx, &qy);
             let lv2 = lineadd(&mut B, &NR, &sx, &sy);
-	    lv.smul(&lv2);
+            lv.smul(&lv2);
             r.ssmul(&lv);
         }
     }
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         r.conj();
     }
 
@@ -341,10 +340,10 @@ pub fn fexp(m: &FP24) -> FP24 {
     lv.copy(&r);
     r.frob(&f, 4);
     r.mul(&lv);
-//    if r.isunity() {
-//	r.zero();
-//	return r;
-//    }
+    //    if r.isunity() {
+    //	r.zero();
+    //	return r;
+    //    }
     /* Hard part of final exp */
     // Ghamman & Fouotsa Method
 
@@ -356,7 +355,7 @@ pub fn fexp(m: &FP24) -> FP24 {
     let mut t2 = t1.pow(&mut x);
     x.fshl(1);
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
     let mut t3 = FP24::new_copy(&t1);
@@ -368,7 +367,7 @@ pub fn fexp(m: &FP24) -> FP24 {
     let mut t4 = t3.pow(&mut x);
     let mut t5 = t4.pow(&mut x);
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t3.conj();
         t5.conj();
     }
@@ -378,7 +377,7 @@ pub fn fexp(m: &FP24) -> FP24 {
     t3.mul(&t4);
 
     let mut t6 = t5.pow(&mut x);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t6.conj();
     }
 
@@ -396,7 +395,7 @@ pub fn fexp(m: &FP24) -> FP24 {
     t5.copy(&t6.pow(&mut x));
     t6.copy(&t5.pow(&mut x));
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t5.conj();
     }
 
@@ -409,7 +408,7 @@ pub fn fexp(m: &FP24) -> FP24 {
     t3.mul(&t0);
     t5.copy(&t6.pow(&mut x));
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t5.conj();
     }
     t2.frob(&f, 7);
@@ -463,7 +462,7 @@ pub fn gs(e: &Big) -> [Big; 8] {
         w.div(&x);
     }
     u[7].copy(&w);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         let mut t = Big::new();
         t.copy(&Big::modneg(&mut u[1], &q));
         u[1].copy(&t);
diff --git a/src/pair256.rs b/src/pair256.rs
index f25676c..c9b073e 100644
--- a/src/pair256.rs
+++ b/src/pair256.rs
@@ -17,19 +17,18 @@ specific language governing permissions and limitations
 under the License.
 */
 
-
-use super::fp::FP;
+use super::big::Big;
+use super::ecp;
 use super::ecp::ECP;
-use super::fp2::FP2;
 use super::ecp8::ECP8;
-use super::fp8::FP8;
+use super::fp::FP;
 use super::fp16::FP16;
+use super::fp2::FP2;
 use super::fp48;
 use super::fp48::FP48;
-use super::big::Big;
-use super::ecp;
+use super::fp8::FP8;
 use super::rom;
-use types::{SignOfX, SexticTwist};
+use types::{SexticTwist, SignOfX};
 
 #[allow(non_snake_case)]
 fn linedbl(A: &mut ECP8, qx: &FP, qy: &FP) -> FP48 {
@@ -56,10 +55,10 @@ fn linedbl(A: &mut ECP8, qx: &FP, qy: &FP) -> FP48 {
 
     let sb = 3 * rom::CURVE_B_I;
     zz.imul(sb);
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         zz.div_2i();
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         zz.times_i();
         zz.dbl();
         yz.times_i();
@@ -72,15 +71,15 @@ fn linedbl(A: &mut ECP8, qx: &FP, qy: &FP) -> FP48 {
     zz.norm(); // 3b.Z^2-Y^2
 
     a.copy(&FP16::new_fp8s(&yz, &zz)); // -2YZ.Ys | 3b.Z^2-Y^2 | 3X^2.Xs
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         b.copy(&FP16::new_fp8(&xx)); // L(0,1) | L(0,0) | L(1,0)
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         c.copy(&FP16::new_fp8(&xx));
         c.times_i();
     }
     A.dbl();
-    let mut res= FP48::new_fp16s(&a, &b, &c);
+    let mut res = FP48::new_fp16s(&a, &b, &c);
     res.settype(fp48::SPARSER);
     return res;
 }
@@ -106,7 +105,7 @@ fn lineadd(A: &mut ECP8, B: &ECP8, qx: &FP, qy: &FP) -> FP48 {
 
     t1.copy(&x1); // T1=X1-Z1.X2
     x1.tmul(qy); // X1=(X1-Z1.X2).Ys
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         x1.times_i();
     }
 
@@ -121,23 +120,23 @@ fn lineadd(A: &mut ECP8, B: &ECP8, qx: &FP, qy: &FP) -> FP48 {
     y1.norm(); // Y1=-(Y1-Z1.Y2).Xs
 
     a.copy(&FP16::new_fp8s(&x1, &t2)); // (X1-Z1.X2).Ys  |  (Y1-Z1.Y2).X2 - (X1-Z1.X2).Y2  | - (Y1-Z1.Y2).Xs
-    if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::DType {
         b.copy(&FP16::new_fp8(&y1));
     }
-    if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE {
+    if ecp::SEXTIC_TWIST == SexticTwist::MType {
         c.copy(&FP16::new_fp8(&y1));
         c.times_i();
     }
 
     A.add(B);
-    let mut res= FP48::new_fp16s(&a, &b, &c);
+    let mut res = FP48::new_fp16s(&a, &b, &c);
     res.settype(fp48::SPARSER);
     return res;
 }
 
 /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */
 #[allow(non_snake_case)]
-fn lbits(n3: &mut Big,n: &mut Big) -> usize {
+fn lbits(n3: &mut Big, n: &mut Big) -> usize {
     n.copy(&Big::new_ints(&rom::CURVE_BNX));
     n3.copy(&n);
     n3.pmul(3);
@@ -148,18 +147,18 @@ fn lbits(n3: &mut Big,n: &mut Big) -> usize {
 /* prepare for multi-pairing */
 pub fn initmp() -> [FP48; rom::ATE_BITS] {
     let r: [FP48; rom::ATE_BITS] = [FP48::new_int(1); rom::ATE_BITS];
-    return r
+    return r;
 }
 
 /* basic Miller loop */
-pub fn miller(r:&[FP48]) -> FP48 {
-    let mut res=FP48::new_int(1);
+pub fn miller(r: &[FP48]) -> FP48 {
+    let mut res = FP48::new_int(1);
     for i in (1..rom::ATE_BITS).rev() {
         res.sqr();
         res.ssmul(&r[i]);
     }
 
-    if ecp::SIGN_OF_X==SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         res.conj();
     }
     res.ssmul(&r[0]);
@@ -168,11 +167,11 @@ pub fn miller(r:&[FP48]) -> FP48 {
 
 /* Accumulate another set of line functions for n-pairing */
 #[allow(non_snake_case)]
-pub fn another(r:&mut [FP48],P1: &ECP8,Q1: &ECP) {
+pub fn another(r: &mut [FP48], P1: &ECP8, Q1: &ECP) {
     let mut n = Big::new();
     let mut n3 = Big::new();
 
-// P is needed in affine form for line function, Q for (Qx,Qy) extraction
+    // P is needed in affine form for line function, Q for (Qx,Qy) extraction
     let mut P = ECP8::new();
     P.copy(P1);
     P.affine();
@@ -189,18 +188,18 @@ pub fn another(r:&mut [FP48],P1: &ECP8,Q1: &ECP) {
     NP.copy(&P);
     NP.neg();
 
-    let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
-    for i in (1..nb-1).rev() {
-        let mut lv=linedbl(&mut A,&qx,&qy);
+    for i in (1..nb - 1).rev() {
+        let mut lv = linedbl(&mut A, &qx, &qy);
 
-	let bt=n3.bit(i)-n.bit(i);
-        if bt==1 {
-            let lv2=lineadd(&mut A,&P,&qx,&qy);
+        let bt = n3.bit(i) - n.bit(i);
+        if bt == 1 {
+            let lv2 = lineadd(&mut A, &P, &qx, &qy);
             lv.smul(&lv2);
         }
-        if bt==-1 {
-            let lv2=lineadd(&mut A,&NP,&qx,&qy);
+        if bt == -1 {
+            let lv2 = lineadd(&mut A, &NP, &qx, &qy);
             lv.smul(&lv2);
         }
         r[i].ssmul(&lv);
@@ -231,7 +230,7 @@ pub fn ate(P1: &ECP8, Q1: &ECP) -> FP48 {
     NP.copy(&P);
     NP.neg();
 
-    let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
     for i in (1..nb - 1).rev() {
         r.sqr();
@@ -248,7 +247,7 @@ pub fn ate(P1: &ECP8, Q1: &ECP) -> FP48 {
         r.ssmul(&lv);
     }
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         r.conj();
     }
 
@@ -294,30 +293,30 @@ pub fn ate2(P1: &ECP8, Q1: &ECP, R1: &ECP8, S1: &ECP) -> FP48 {
     NR.copy(&R);
     NR.neg();
 
-     let nb=lbits(&mut n3,&mut n);
+    let nb = lbits(&mut n3, &mut n);
 
     for i in (1..nb - 1).rev() {
         r.sqr();
         let mut lv = linedbl(&mut A, &qx, &qy);
         let lv2 = linedbl(&mut B, &sx, &sy);
-	lv.smul(&lv2);
+        lv.smul(&lv2);
         r.ssmul(&lv);
         let bt = n3.bit(i) - n.bit(i);
         if bt == 1 {
             lv = lineadd(&mut A, &P, &qx, &qy);
             let lv2 = lineadd(&mut B, &R, &sx, &sy);
-	    lv.smul(&lv2);
+            lv.smul(&lv2);
             r.ssmul(&lv);
         }
         if bt == -1 {
             lv = lineadd(&mut A, &NP, &qx, &qy);
             let lv2 = lineadd(&mut B, &NR, &sx, &sy);
-	    lv.smul(&lv2);
+            lv.smul(&lv2);
             r.ssmul(&lv);
         }
     }
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         r.conj();
     }
 
@@ -339,10 +338,10 @@ pub fn fexp(m: &FP48) -> FP48 {
     lv.copy(&r);
     r.frob(&f, 8);
     r.mul(&lv);
-//    if r.isunity() {
-//	r.zero();
-//	return r;
-//    }
+    //    if r.isunity() {
+    //	r.zero();
+    //	return r;
+    //    }
     /* Hard part of final exp */
     // Ghamman & Fouotsa Method
 
@@ -354,7 +353,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     let mut t2 = t1.pow(&mut x);
     x.fshl(1);
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -367,7 +366,7 @@ pub fn fexp(m: &FP48) -> FP48 {
 
     t1.copy(&t2.pow(&mut x));
 
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
     t3.copy(&t1);
@@ -375,7 +374,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -384,7 +383,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -393,7 +392,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -402,7 +401,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -411,7 +410,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -420,7 +419,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -429,7 +428,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -441,7 +440,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -450,7 +449,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -459,7 +458,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -468,7 +467,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -477,7 +476,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -486,7 +485,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -495,7 +494,7 @@ pub fn fexp(m: &FP48) -> FP48 {
     r.mul(&t3);
     lv.copy(&t1.pow(&mut x));
     t1.copy(&lv);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         t1.conj();
     }
 
@@ -555,7 +554,7 @@ pub fn gs(e: &Big) -> [Big; 16] {
         w.div(&x);
     }
     u[15].copy(&w);
-    if ecp::SIGN_OF_X == SignOfX::NEGATIVEX {
+    if ecp::SIGN_OF_X == SignOfX::NegativeX {
         let mut t = Big::new();
         t.copy(&Big::modneg(&mut u[1], &q));
         u[1].copy(&t);
diff --git a/src/rand.rs b/src/rand.rs
index 34c264d..1ef961a 100644
--- a/src/rand.rs
+++ b/src/rand.rs
@@ -158,7 +158,7 @@ impl RAND {
         if self.pool_ptr >= 32 {
             self.fill_pool()
         }
-        return (r & 0xff) as u8;
+        return u8::from(r);
     }
 }
 
diff --git a/src/roms/rom_anssi_32.rs b/src/roms/rom_anssi_32.rs
index 403fb04..3523fa4 100644
--- a/src/roms/rom_anssi_32.rs
+++ b/src/roms/rom_anssi_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use anssi::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use anssi::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 // anssi Modulus
@@ -61,13 +61,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_anssi_64.rs b/src/roms/rom_anssi_64.rs
index b0add0f..1c32ea1 100644
--- a/src/roms/rom_anssi_64.rs
+++ b/src/roms/rom_anssi_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use anssi::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use anssi::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // anssi Modulus
@@ -79,13 +79,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bls24_32.rs b/src/roms/rom_bls24_32.rs
index 72afe58..4a41136 100644
--- a/src/roms/rom_bls24_32.rs
+++ b/src/roms/rom_bls24_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls24::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls24::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // bls24 Modulus
@@ -228,13 +228,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 479;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 49;
-pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::PositiveX;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
diff --git a/src/roms/rom_bls24_64.rs b/src/roms/rom_bls24_64.rs
index 0c500da..8324005 100644
--- a/src/roms/rom_bls24_64.rs
+++ b/src/roms/rom_bls24_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls24::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls24::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // bls24 Modulus
@@ -276,13 +276,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 479;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 25;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 49;
-pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::PositiveX;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
diff --git a/src/roms/rom_bls381_32.rs b/src/roms/rom_bls381_32.rs
index 1ba0fe5..e282e9d 100644
--- a/src/roms/rom_bls381_32.rs
+++ b/src/roms/rom_bls381_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls381::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls381::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // bls381 Modulus
@@ -197,13 +197,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 381;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 65;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bls381_64.rs b/src/roms/rom_bls381_64.rs
index 08df12c..4d95fdb 100644
--- a/src/roms/rom_bls381_64.rs
+++ b/src/roms/rom_bls381_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls381::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls381::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 58
 // bls381 Modulus
@@ -199,13 +199,13 @@ pub const BASEBITS: usize = 58;
 
 pub const MODBITS: usize = 381;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 25;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 65;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bls383_32.rs b/src/roms/rom_bls383_32.rs
index 0ccb42d..b61a4dd 100644
--- a/src/roms/rom_bls383_32.rs
+++ b/src/roms/rom_bls383_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls383::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls383::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 pub const MODULUS: [Chunk; NLEN] = [
@@ -195,13 +195,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 383;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 65;
-pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::PositiveX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bls383_64.rs b/src/roms/rom_bls383_64.rs
index 71bef66..af4d009 100644
--- a/src/roms/rom_bls383_64.rs
+++ b/src/roms/rom_bls383_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls383::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls383::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 58
 pub const MODULUS: [Chunk; NLEN] = [
@@ -206,13 +206,13 @@ pub const BASEBITS: usize = 58;
 
 pub const MODBITS: usize = 383;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 23;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 65;
-pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::PositiveX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bls461_32.rs b/src/roms/rom_bls461_32.rs
index c452a9f..65abfd5 100644
--- a/src/roms/rom_bls461_32.rs
+++ b/src/roms/rom_bls461_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls461::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls461::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 // bls461 Modulus
@@ -197,13 +197,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 461;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 78;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bls461_64.rs b/src/roms/rom_bls461_64.rs
index 500ef04..e0fb356 100644
--- a/src/roms/rom_bls461_64.rs
+++ b/src/roms/rom_bls461_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls461::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls461::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 60
 // bls461 Modulus
@@ -220,13 +220,13 @@ pub const BASEBITS: usize = 60;
 
 pub const MODBITS: usize = 461;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 19;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 78;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bls48_32.rs b/src/roms/rom_bls48_32.rs
index 83517a8..13fafe1 100644
--- a/src/roms/rom_bls48_32.rs
+++ b/src/roms/rom_bls48_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls48::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls48::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // bls48 Modulus
@@ -297,13 +297,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 556;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 32;
-pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::PositiveX;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_bls48_64.rs b/src/roms/rom_bls48_64.rs
index 129c776..3b63ce7 100644
--- a/src/roms/rom_bls48_64.rs
+++ b/src/roms/rom_bls48_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bls48::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bls48::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 58
 // bls48 Modulus
@@ -389,13 +389,13 @@ pub const BASEBITS: usize = 58;
 
 pub const MODBITS: usize = 556;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bls;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 32;
-pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::PositiveX;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_bn254CX_32.rs b/src/roms/rom_bn254CX_32.rs
index e1cff0d..a6e7ef8 100644
--- a/src/roms/rom_bn254CX_32.rs
+++ b/src/roms/rom_bn254CX_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bn254CX::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bn254CX::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 // bn254CX Modulus
@@ -171,13 +171,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 254;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BN;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::D_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bn;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::DType;
 pub const ATE_BITS: usize = 66;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bn254CX_64.rs b/src/roms/rom_bn254CX_64.rs
index 7f6d274..75d4c28 100644
--- a/src/roms/rom_bn254CX_64.rs
+++ b/src/roms/rom_bn254CX_64.rs
@@ -17,10 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bn254CX::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
-
+use bn254CX::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // bn254CX Modulus
@@ -230,13 +229,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 254;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 64;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BN;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::D_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bn;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::DType;
 pub const ATE_BITS: usize = 66;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bn254_32.rs b/src/roms/rom_bn254_32.rs
index c9ae5ec..1899c4a 100644
--- a/src/roms/rom_bn254_32.rs
+++ b/src/roms/rom_bn254_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bn254::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bn254::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 pub const MODULUS: [Chunk; NLEN] = [
@@ -159,13 +159,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 254;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BN;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::D_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bn;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::DType;
 pub const ATE_BITS: usize = 66;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_bn254_64.rs b/src/roms/rom_bn254_64.rs
index f61b542..08502f3 100644
--- a/src/roms/rom_bn254_64.rs
+++ b/src/roms/rom_bn254_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use bn254::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use bn254::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // BN254 Modulus
 // Base Bits= 56
@@ -196,13 +196,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 254;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 26;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BN;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::D_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bn;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::DType;
 pub const ATE_BITS: usize = 66;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
-pub const AESKEY: usize = 16;
\ No newline at end of file
+pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_brainpool_32.rs b/src/roms/rom_brainpool_32.rs
index b788632..17b1268 100644
--- a/src/roms/rom_brainpool_32.rs
+++ b/src/roms/rom_brainpool_32.rs
@@ -19,9 +19,9 @@ under the License.
 
 /* Note that the original curve has been transformed to an isomorphic curve with A=-3 */
 
-use brainpool::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use brainpool::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 // brainpool Modulus
@@ -62,13 +62,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_brainpool_64.rs b/src/roms/rom_brainpool_64.rs
index 8191561..89a445e 100644
--- a/src/roms/rom_brainpool_64.rs
+++ b/src/roms/rom_brainpool_64.rs
@@ -19,9 +19,9 @@ under the License.
 
 /* Note that the original curve has been transformed to an isomorphic curve with A=-3 */
 
-use brainpool::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use brainpool::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // brainpool Modulus
@@ -80,13 +80,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const ATE_BITS: usize = 0;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_c25519_32.rs b/src/roms/rom_c25519_32.rs
index 6da6a05..d07207e 100644
--- a/src/roms/rom_c25519_32.rs
+++ b/src/roms/rom_c25519_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use c25519::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use c25519::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // Curve25519 Modulus
@@ -47,13 +47,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 255;
 pub const MOD8: usize = 5;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 6;
 
-pub const CURVETYPE: CurveType = CurveType::MONTGOMERY;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Montgomery;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_c25519_64.rs b/src/roms/rom_c25519_64.rs
index 9a8c59f..42b1d70 100644
--- a/src/roms/rom_c25519_64.rs
+++ b/src/roms/rom_c25519_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use c25519::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use c25519::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // Curve25519 Modulus
@@ -49,13 +49,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 255;
 pub const MOD8: usize = 5;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 25;
 
-pub const CURVETYPE: CurveType = CurveType::MONTGOMERY;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Montgomery;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_c41417_32.rs b/src/roms/rom_c41417_32.rs
index a8330cb..c471f76 100644
--- a/src/roms/rom_c41417_32.rs
+++ b/src/roms/rom_c41417_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use c41417::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use c41417::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // c41417 Modulus
@@ -59,13 +59,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 414;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_c41417_64.rs b/src/roms/rom_c41417_64.rs
index 52b51b1..3a2ef58 100644
--- a/src/roms/rom_c41417_64.rs
+++ b/src/roms/rom_c41417_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use c41417::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use c41417::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 60
 // c41417 Modulus
@@ -66,13 +66,13 @@ pub const BASEBITS: usize = 60;
 
 pub const MODBITS: usize = 414;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 6;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_ed25519_32.rs b/src/roms/rom_ed25519_32.rs
index be1d156..c866d50 100644
--- a/src/roms/rom_ed25519_32.rs
+++ b/src/roms/rom_ed25519_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use ed25519::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use ed25519::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // Curve25519 Modulus
@@ -56,13 +56,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 255;
 pub const MOD8: usize = 5;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 6;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_ed25519_64.rs b/src/roms/rom_ed25519_64.rs
index cf23672..a26461b 100644
--- a/src/roms/rom_ed25519_64.rs
+++ b/src/roms/rom_ed25519_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use ed25519::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use ed25519::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // Curve25519 Modulus
@@ -67,13 +67,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 255;
 pub const MOD8: usize = 5;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 25;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_fp256bn_32.rs b/src/roms/rom_fp256bn_32.rs
index e3cabe1..0f196b0 100644
--- a/src/roms/rom_fp256bn_32.rs
+++ b/src/roms/rom_fp256bn_32.rs
@@ -17,10 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use fp256bn::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
-
+use fp256bn::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 pub const MODULUS: [Chunk; NLEN] = [
@@ -168,13 +167,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BN;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bn;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 66;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_fp256bn_64.rs b/src/roms/rom_fp256bn_64.rs
index bde7639..d1a38b9 100644
--- a/src/roms/rom_fp256bn_64.rs
+++ b/src/roms/rom_fp256bn_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use fp256bn::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use fp256bn::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // fp256bn Modulus
 // Base Bits= 56
@@ -221,13 +221,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BN;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bn;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 66;
-pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::NegativeX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_fp512bn_32.rs b/src/roms/rom_fp512bn_32.rs
index cdc44af..e18646b 100644
--- a/src/roms/rom_fp512bn_32.rs
+++ b/src/roms/rom_fp512bn_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use fp512bn::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use fp512bn::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 pub const MODULUS: [Chunk; NLEN] = [
@@ -237,13 +237,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 512;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 10;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BN;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bn;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 130;
-pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::PositiveX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_fp512bn_64.rs b/src/roms/rom_fp512bn_64.rs
index 54d85c4..a3e5f57 100644
--- a/src/roms/rom_fp512bn_64.rs
+++ b/src/roms/rom_fp512bn_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use fp512bn::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use fp512bn::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 60
 pub const MODULUS: [Chunk; NLEN] = [
@@ -470,13 +470,13 @@ pub const BASEBITS: usize = 60;
 
 pub const MODBITS: usize = 512;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 28;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BN;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Bn;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::MType;
 pub const ATE_BITS: usize = 130;
-pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX;
+pub const SIGN_OF_X: SignOfX = SignOfX::PositiveX;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_goldilocks_32.rs b/src/roms/rom_goldilocks_32.rs
index 5d5f8bb..096ff30 100644
--- a/src/roms/rom_goldilocks_32.rs
+++ b/src/roms/rom_goldilocks_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use goldilocks::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use goldilocks::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // Goldilocks modulus
@@ -61,13 +61,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 448;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::GENERALISED_MERSENNE;
+pub const MODTYPE: ModType = ModType::GeneralisedMersenne;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_goldilocks_64.rs b/src/roms/rom_goldilocks_64.rs
index d6cadf1..6547052 100644
--- a/src/roms/rom_goldilocks_64.rs
+++ b/src/roms/rom_goldilocks_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use goldilocks::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use goldilocks::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 58
 // Goldilocks modulus
@@ -87,13 +87,13 @@ pub const BASEBITS: usize = 58;
 
 pub const MODBITS: usize = 448;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::GENERALISED_MERSENNE;
+pub const MODTYPE: ModType = ModType::GeneralisedMersenne;
 pub const SH: usize = 16;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_hifive_32.rs b/src/roms/rom_hifive_32.rs
index cfa9f59..01dcb03 100644
--- a/src/roms/rom_hifive_32.rs
+++ b/src/roms/rom_hifive_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use hifive::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use hifive::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 
@@ -56,13 +56,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 336;
 pub const MOD8: usize = 5;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 12;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
diff --git a/src/roms/rom_hifive_64.rs b/src/roms/rom_hifive_64.rs
index b2eebb9..f7b5621 100644
--- a/src/roms/rom_hifive_64.rs
+++ b/src/roms/rom_hifive_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use hifive::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use hifive::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 60
 
@@ -65,13 +65,13 @@ pub const BASEBITS: usize = 60;
 
 pub const MODBITS: usize = 336;
 pub const MOD8: usize = 5;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
diff --git a/src/roms/rom_nist256_32.rs b/src/roms/rom_nist256_32.rs
index 6859da5..12c47f9 100644
--- a/src/roms/rom_nist256_32.rs
+++ b/src/roms/rom_nist256_32.rs
@@ -19,9 +19,9 @@ under the License.
 
 /* Fixed Data in ROM - Field and Curve parameters */
 
-use nist256::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nist256::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 
@@ -45,8 +45,7 @@ pub const CURVE_B: [Chunk; NLEN] = [
     0xAC635D8, 0x5,
 ];
 pub const CURVE_ORDER: [Chunk; NLEN] = [
-    0xC632551, 0xB9CAC2F, 0x79E84F3, 0xFAADA71, 0xFFFBCE6, 0xFFFFFFF, 0xFFFFFF, 0x0, 0xFFFFFFF,
-    0xF,
+    0xC632551, 0xB9CAC2F, 0x79E84F3, 0xFAADA71, 0xFFFBCE6, 0xFFFFFFF, 0xFFFFFF, 0x0, 0xFFFFFFF, 0xF,
 ];
 pub const CURVE_GX: [Chunk; NLEN] = [
     0x898C296, 0xA13945D, 0xB33A0F4, 0x7D812DE, 0xF27703, 0xE563A44, 0x7F8BCE6, 0xE12C424,
@@ -62,13 +61,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_nist256_64.rs b/src/roms/rom_nist256_64.rs
index 015bbb3..5da758c 100644
--- a/src/roms/rom_nist256_64.rs
+++ b/src/roms/rom_nist256_64.rs
@@ -19,9 +19,9 @@ under the License.
 
 /* Fixed Data in ROM - Field and Curve parameters */
 
-use nist256::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nist256::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // nist256 modulus
@@ -74,13 +74,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_nist384_32.rs b/src/roms/rom_nist384_32.rs
index 48d7826..2939f30 100644
--- a/src/roms/rom_nist384_32.rs
+++ b/src/roms/rom_nist384_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nist384::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nist384::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 
@@ -64,13 +64,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 384;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
diff --git a/src/roms/rom_nist384_64.rs b/src/roms/rom_nist384_64.rs
index f0f5c69..4654ec6 100644
--- a/src/roms/rom_nist384_64.rs
+++ b/src/roms/rom_nist384_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nist384::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nist384::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 
@@ -44,7 +44,6 @@ pub const R2MODP: [Chunk; NLEN] = [
 ];
 pub const MCONST: Chunk = 0x100000001;
 
-
 // nist384 Curve
 pub const CURVE_COF_I: isize = 1;
 pub const CURVE_A: isize = -3;
@@ -92,13 +91,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 384;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 8;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
diff --git a/src/roms/rom_nist521_32.rs b/src/roms/rom_nist521_32.rs
index 55cbf30..7a74956 100644
--- a/src/roms/rom_nist521_32.rs
+++ b/src/roms/rom_nist521_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nist521::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nist521::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 // nist521 Modulus
@@ -67,13 +67,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 521;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 11;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_nist521_64.rs b/src/roms/rom_nist521_64.rs
index bf241b2..dec3c9c 100644
--- a/src/roms/rom_nist521_64.rs
+++ b/src/roms/rom_nist521_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nist521::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nist521::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 60
 // nist521 Modulus
@@ -92,13 +92,13 @@ pub const BASEBITS: usize = 60;
 
 pub const MODBITS: usize = 521;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 19;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_nums256e_32.rs b/src/roms/rom_nums256e_32.rs
index 45506bd..b1d20c3 100644
--- a/src/roms/rom_nums256e_32.rs
+++ b/src/roms/rom_nums256e_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums256e::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums256e::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 
@@ -58,14 +58,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 5;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
-
diff --git a/src/roms/rom_nums256e_64.rs b/src/roms/rom_nums256e_64.rs
index 4382924..b8ac09e 100644
--- a/src/roms/rom_nums256e_64.rs
+++ b/src/roms/rom_nums256e_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums256e::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums256e::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // nums256 Modulus
@@ -67,14 +67,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
-
diff --git a/src/roms/rom_nums256w_32.rs b/src/roms/rom_nums256w_32.rs
index b768380..4ffb798 100644
--- a/src/roms/rom_nums256w_32.rs
+++ b/src/roms/rom_nums256w_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums256w::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums256w::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 // nums256 modulus
@@ -54,13 +54,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_nums256w_64.rs b/src/roms/rom_nums256w_64.rs
index 5b5d491..be3b7ff 100644
--- a/src/roms/rom_nums256w_64.rs
+++ b/src/roms/rom_nums256w_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums256w::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums256w::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // nums256 Modulus
@@ -66,13 +66,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_nums384e_32.rs b/src/roms/rom_nums384e_32.rs
index eaad1c8..787f4c1 100644
--- a/src/roms/rom_nums384e_32.rs
+++ b/src/roms/rom_nums384e_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums384e::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums384e::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // nums384 Modulus
@@ -61,14 +61,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 384;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
-
diff --git a/src/roms/rom_nums384e_64.rs b/src/roms/rom_nums384e_64.rs
index 08d83c2..a1a4318 100644
--- a/src/roms/rom_nums384e_64.rs
+++ b/src/roms/rom_nums384e_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums384e::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums384e::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 // nums384 Modulus
@@ -82,14 +82,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 384;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 8;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
-
diff --git a/src/roms/rom_nums384w_32.rs b/src/roms/rom_nums384w_32.rs
index 92181a6..74d5216 100644
--- a/src/roms/rom_nums384w_32.rs
+++ b/src/roms/rom_nums384w_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums384w::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums384w::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // nums384 Modulus
@@ -61,14 +61,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 384;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
-
diff --git a/src/roms/rom_nums384w_64.rs b/src/roms/rom_nums384w_64.rs
index 3f51d94..bd057e2 100644
--- a/src/roms/rom_nums384w_64.rs
+++ b/src/roms/rom_nums384w_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums384w::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums384w::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 58
 // nums384 Modulus
@@ -81,14 +81,13 @@ pub const BASEBITS: usize = 58;
 
 pub const MODBITS: usize = 384;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 22;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 48;
 pub const AESKEY: usize = 24;
-
diff --git a/src/roms/rom_nums512e_32.rs b/src/roms/rom_nums512e_32.rs
index 8d53f9f..48ca9ea 100644
--- a/src/roms/rom_nums512e_32.rs
+++ b/src/roms/rom_nums512e_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums512e::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums512e::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // nums512 Modulus
@@ -67,13 +67,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 512;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 10;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_nums512e_64.rs b/src/roms/rom_nums512e_64.rs
index 298f3cc..f645d85 100644
--- a/src/roms/rom_nums512e_64.rs
+++ b/src/roms/rom_nums512e_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums512e::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums512e::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 60
 // nums512 Modulus
@@ -92,13 +92,13 @@ pub const BASEBITS: usize = 60;
 
 pub const MODBITS: usize = 512;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 28;
 
-pub const CURVETYPE: CurveType = CurveType::EDWARDS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Edwards;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_nums512w_32.rs b/src/roms/rom_nums512w_32.rs
index 785070c..c787795 100644
--- a/src/roms/rom_nums512w_32.rs
+++ b/src/roms/rom_nums512w_32.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums512w::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums512w::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 29
 // nums512 Modulus
@@ -65,13 +65,13 @@ pub const BASEBITS: usize = 29;
 
 pub const MODBITS: usize = 512;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 10;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_nums512w_64.rs b/src/roms/rom_nums512w_64.rs
index 6868c87..79ed127 100644
--- a/src/roms/rom_nums512w_64.rs
+++ b/src/roms/rom_nums512w_64.rs
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-use nums512w::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use nums512w::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 60
 // nums512 Modulus
@@ -82,13 +82,13 @@ pub const BASEBITS: usize = 60;
 
 pub const MODBITS: usize = 512;
 pub const MOD8: usize = 3;
-pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
+pub const MODTYPE: ModType = ModType::PseudoMersenne;
 pub const SH: usize = 28;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 64;
 pub const AESKEY: usize = 32;
diff --git a/src/roms/rom_rsa2048_32.rs b/src/roms/rom_rsa2048_32.rs
index 6dd06a6..29b5a60 100644
--- a/src/roms/rom_rsa2048_32.rs
+++ b/src/roms/rom_rsa2048_32.rs
@@ -1,3 +1,3 @@
 pub const MODBYTES: usize = 128;
 pub const BASEBITS: usize = 28;
-pub const FFLEN: usize = 2;
\ No newline at end of file
+pub const FFLEN: usize = 2;
diff --git a/src/roms/rom_rsa2048_64.rs b/src/roms/rom_rsa2048_64.rs
index be3ba0d..4caac22 100644
--- a/src/roms/rom_rsa2048_64.rs
+++ b/src/roms/rom_rsa2048_64.rs
@@ -1,3 +1,3 @@
 pub const MODBYTES: usize = 128;
 pub const BASEBITS: usize = 58;
-pub const FFLEN: usize = 2;
\ No newline at end of file
+pub const FFLEN: usize = 2;
diff --git a/src/roms/rom_rsa3072_32.rs b/src/roms/rom_rsa3072_32.rs
index d5622e2..62b929e 100644
--- a/src/roms/rom_rsa3072_32.rs
+++ b/src/roms/rom_rsa3072_32.rs
@@ -1,3 +1,3 @@
 pub const MODBYTES: usize = 48;
 pub const BASEBITS: usize = 28;
-pub const FFLEN: usize = 8;
\ No newline at end of file
+pub const FFLEN: usize = 8;
diff --git a/src/roms/rom_rsa3072_64.rs b/src/roms/rom_rsa3072_64.rs
index 4d1ed2b..ef66da7 100644
--- a/src/roms/rom_rsa3072_64.rs
+++ b/src/roms/rom_rsa3072_64.rs
@@ -1,3 +1,3 @@
 pub const MODBYTES: usize = 48;
 pub const BASEBITS: usize = 58;
-pub const FFLEN: usize = 8;
\ No newline at end of file
+pub const FFLEN: usize = 8;
diff --git a/src/roms/rom_rsa4096_32.rs b/src/roms/rom_rsa4096_32.rs
index 223cb7d..16ade15 100644
--- a/src/roms/rom_rsa4096_32.rs
+++ b/src/roms/rom_rsa4096_32.rs
@@ -1,3 +1,3 @@
 pub const MODBYTES: usize = 64;
 pub const BASEBITS: usize = 29;
-pub const FFLEN: usize = 8;
\ No newline at end of file
+pub const FFLEN: usize = 8;
diff --git a/src/roms/rom_rsa4096_64.rs b/src/roms/rom_rsa4096_64.rs
index 77d3eb6..e8ebfc6 100644
--- a/src/roms/rom_rsa4096_64.rs
+++ b/src/roms/rom_rsa4096_64.rs
@@ -1,3 +1,3 @@
 pub const MODBYTES: usize = 64;
 pub const BASEBITS: usize = 60;
-pub const FFLEN: usize = 8;
\ No newline at end of file
+pub const FFLEN: usize = 8;
diff --git a/src/roms/rom_secp256k1_32.rs b/src/roms/rom_secp256k1_32.rs
index 94bbbaa..cb9b32b 100644
--- a/src/roms/rom_secp256k1_32.rs
+++ b/src/roms/rom_secp256k1_32.rs
@@ -19,9 +19,9 @@ under the License.
 
 /* Fixed Data in ROM - Field and Curve parameters */
 
-use secp256k1::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use secp256k1::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 28
 // secp256k1 modulus
@@ -58,13 +58,13 @@ pub const BASEBITS: usize = 28;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 14;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/roms/rom_secp256k1_64.rs b/src/roms/rom_secp256k1_64.rs
index b22d875..0b100b6 100644
--- a/src/roms/rom_secp256k1_64.rs
+++ b/src/roms/rom_secp256k1_64.rs
@@ -19,9 +19,9 @@ under the License.
 
 /* Fixed Data in ROM - Field and Curve parameters */
 
-use secp256k1::big::NLEN;
 use super::super::arch::Chunk;
-use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
+use secp256k1::big::NLEN;
+use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX};
 
 // Base Bits= 56
 
@@ -69,13 +69,13 @@ pub const BASEBITS: usize = 56;
 
 pub const MODBITS: usize = 256;
 pub const MOD8: usize = 7;
-pub const MODTYPE: ModType = ModType::NOT_SPECIAL;
+pub const MODTYPE: ModType = ModType::NotSpecial;
 pub const SH: usize = 24;
 
-pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
-pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
-pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
+pub const CURVETYPE: CurveType = CurveType::Weierstrass;
+pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::Not;
+pub const SEXTIC_TWIST: SexticTwist = SexticTwist::Not;
 pub const ATE_BITS: usize = 0;
-pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
+pub const SIGN_OF_X: SignOfX = SignOfX::Not;
 pub const HASH_TYPE: usize = 32;
 pub const AESKEY: usize = 16;
diff --git a/src/sha3.rs b/src/sha3.rs
index eeaf953..710d20e 100644
--- a/src/sha3.rs
+++ b/src/sha3.rs
@@ -162,7 +162,7 @@ impl SHA3 {
         let ind = cnt / 8;
         let i = ind % 5;
         let j = ind / 5;
-        self.s[i][j] ^= ((byt & 0xff) as u64) << (8 * b);
+        self.s[i][j] ^= u64::from(byt) << (8 * b);
         self.length += 1;
         if cnt + 1 == self.rate {
             self.transform();
diff --git a/src/types.rs b/src/types.rs
index ea310d7..9db4257 100644
--- a/src/types.rs
+++ b/src/types.rs
@@ -1,45 +1,44 @@
 #[derive(PartialEq)]
 pub enum ModType {
-    NOT_SPECIAL,
-    PSEUDO_MERSENNE,
-    MONTGOMERY_FRIENDLY,
-    GENERALISED_MERSENNE,
+    NotSpecial,
+    PseudoMersenne,
+    MontgomeryFriendly,
+    GeneralisedMersenne,
 }
 
 #[derive(PartialEq)]
 pub enum CurveType {
-    EDWARDS,
-    WEIERSTRASS,
-    MONTGOMERY,
+    Edwards,
+    Weierstrass,
+    Montgomery,
 }
 
 #[derive(PartialEq)]
 pub enum CurvePairingType {
-    NOT,
-    BN,
-    BLS,
+    Not,
+    Bn,
+    Bls,
 }
 
 #[derive(PartialEq)]
 pub enum SexticTwist {
-    NOT,
-    D_TYPE,
-    M_TYPE,
+    Not,
+    DType,
+    MType,
 }
 impl Into<usize> for SexticTwist {
     fn into(self) -> usize {
         match self {
-            SexticTwist::NOT => 0,
-            SexticTwist::D_TYPE => 0,
-            SexticTwist::M_TYPE => 1,
+            SexticTwist::Not => 0,
+            SexticTwist::DType => 0,
+            SexticTwist::MType => 1,
         }
     }
 }
 
 #[derive(PartialEq)]
 pub enum SignOfX {
-    NOT,
-    POSITIVEX,
-    NEGATIVEX,
+    Not,
+    PositiveX,
+    NegativeX,
 }
-