Added first part | to-do: make tests and tweak it if needed