Updated with documentation and code clean-up.