add extend function