TODO: make sure edge cases of backspacing are working