modules and abstract data types 1069654