finish first version, probabaly final version