Add reservation model and some tests