rework how implementation works, and start documentation.