more documentation and design