Added all features! Need to test more.