firts commit - all tests pass
merge from uspstream