keep in sync with core changes