adding new features, fixing broken ones