getting basic behaviors working, plus adding unit tests