Initial implementation of sets, with tests