complete  the first version