first impl of new data abstractions