add version contraints, add some comments