Refactored. Changed Promise to an interface. Introduced Promises factory class. Made PromiseList not implement list etc.