use more futures, removed callbacks