Add tests and functionality

- moved fields functionality into the gem (why was it ever anywhere else)
- added documentation
- added tests
- added attribution (lame!)