finish refactoring, add back functionality, and new release version