basic working interface using deferreds