added promises library (Q/A+)