handles insertion events as well now. poorly though. may need to
restructure.