merging with master to stay in sync

all tests pass, including your stuff