changed sort order to descending; added some constructors; moved logic off classes where it didn't belong.