remove support for records
make internals private where possible