Add more documentation. Clean up TODOs.