code clean up and bug fixes