required features implemented