done with building data type system