adding lots of new features