first version, basic functionality add: checkout, switch with revert.