Can now return a ring. Passes tests but is probobly buggy.