Added Q.Promise implementation in separate file