initial commit
added additional test
add additional tests and clean up code
add persisted state