Add percentage and use promises

These are all promise functions