feat: refactor, update gemspec, and reorganize code
chore: add tests, .gitignore, license, and clean up