refactor and some fixes
adds some specs
specify supported versions