Add percentage and use promises

the exec() will automatically return a promise