#2: API, docs, tests