finishing basic version