sync with jzaefferer:master