added tests, minitest, guard, etc