made it from scratch, added functionality to sort and filter as well