implementing some features