clean code
first version