add extends
update extends function