cleanup, let's get this new implementation working before optimizing
more cleanup