optimised for extension