Created type and IO functions to seperate memory management and IO boilerplate from computations, rewrote building blocks using an alternate generalization of ZKP's (more efficient)