initial commit; sync with upstream