first pass at a repository class, to be filled by the parser and flattened by the deparsers