Replace typehint with interfaces or abstract  #118