this seems really less wasted memory, and works