api and backwards compat work