implement some required interfaces