added a ton of features