try to rewrite all from beginning [3] a few changes