adding tests for cpu algorithm
abstracting size and index specific stuff into dunder mangled variables at the class level, keeps the methods generic