added a bunch of new features