extend basic functional