TODO: fill in the abstract representation I assume