difficulty done, code clean up and sys out clean up