refactor all code ~> previously not really 'beautiful'
refactor and add new init method which allow to pass the default STATE