Refatored to use Composite and Promises

=)