customizations
merge with upstream