extracting methods... these bang methods suck though.  just modifying state :(