initial implementation and gemspec