Add a first set of core classes, as well as tests