future work: finished first version