switched to using case classes
added more dependencies
started on tests
updated git ignore to ignore test files as a stopgap to proper cleanup