start working on how erlang defines types
start on algebraic data types