Just adt now, for I will implement in other languages