lots of features implemented