finish the very first version