updated upstream branch from hipster