Added all features, untested