refined Apply method