implement some features