discovered the mutable keyword and made some non-const methods const (the only thing that was non-const about them was writing to a preallocated object instead of allocating a new one)