added catch, fail, and done to promises & updated version