finished for the first version