functions extended