add real tests, code clean up, etc.