part 2 - data types, some fixes in part 1