update TODO
diff --git a/TODO.md b/TODO.md
index 1adb737..5213e8c 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,4 +1,46 @@
-# API Plans
+# Soon
+
+* define ZIP_STATIC when libzip is built statically
+
+* review guidelines/community standards
+  - (Linux Foundation Core Infrastructure Initiative Best Practices)[https://bestpractices.coreinfrastructure.org/]
+  - (Readme Maturity Level)[https://github.com/LappleApple/feedmereadmes/blob/master/README-maturity-model.md]
+  - (Github Community Profile)[https://github.com/nih-at/libzip/community]
+
+* migration to CMake
+  - tests (libgit2 tests using ctest)
+  - how to make source distributions
+  - replace `make distcheck`
+  - cmake on Linux: man pages not built (https://github.com/nih-at/libzip/issues/8)
+  - check generated xcode project
+  
+* clone support
+  - APFS
+  - `zip_source_buffer`: also support multiple buffers, compare `writev` `struct iovec`
+  - test using `zip_source_buffer`
+
+* randomness test: replace `zip_random()` instead of `open()`
+
+* run Coverity tests automatically via github/travis
+
+* switch to newer fcrypt sources, see https://github.com/BrianGladman/AES/issues/19
+
+* add HISTORY section to man pages (semi-automatically)
+  - check out `zip.h` from different releases
+  - compare signatures
+  - create HISTORY sections
+
+* improve man page formatting of tagged lists on webpage (`<dl>`)
+
+* build own version of `ziptool` for regress
+  - move source_hole, zip from memory there
+
+* test error cases with special source
+  - tell it which command should fail
+  - use it both as source for `zip_add` and `zip_open_from_source`
+  
+
+# Later
 
 ## Prefixes
 
@@ -8,12 +50,12 @@
 const zip_uint8_t *zip_get_archive_prefix(struct zip *za, zip_uint64_t *lengthp);
 ````
 
-# Compression
+## Compression
 
 * Test CMAKE for bzip2
 * add lzma support
 
-# API Issues
+## API Issues
 
 * `zip_get_archive_comment` has `int *lenp` argument.  Cleaner would be `zip_uint32_t *`.
   rename and fix.  which other functions for naming consistency?
@@ -22,12 +64,8 @@
 * compression/crypt error messages a la `ZIP_ER_ZLIB` (no detailed info passing)
 * check arguments for every entry point into libzip
 
-# Features
+## Features
 
-* Winzip AES support
-  * test cases decryption: <=20, >20, stat for both
-  * test cases encryption: no password, default password, file-specific password, 128/192/256, <=20, >20
-  * support testing on macOS
 * consistently use `_zip_crypto_clear()` for passwords
 * support setting extra fields from `zip_source`
   * introduce layers of extra fields:
@@ -66,7 +104,7 @@
 
 * support for old compression methods?????
 
-# Bugs
+## Bugs
 
 * support InfoZIP encryption header extension (copy data descriptor for encrypted files)
 * ensure that nentries is small enough not to cause overflow (size_t for entry, uint64 for CD on disk)
@@ -78,7 +116,7 @@
 * `cdr == NULL` -> `ER_NOENT` vs. `idx > cdir->nentry` -> `ER_INVAL` inconsistent (still there?)
 
 
-# Cleanup
+## Cleanup
 
 * go over cdir parser and rename various offset/size variables to make it clearer
 * use bool
@@ -87,17 +125,23 @@
 * get rid of `zip_get_{compression,encryption}_implementation()`
 * use `zip_*int*_t` internally
 
-# Analysis
+## Analysis
 
 * pass through coverity
 
-# Infrastructure
+## Infrastructure
 
 * create CMakefile.txt man page linking from links file
 * handle missing mandoc on Linux
+* configure appveyor for Windows builds of libzip
 
-# Test Case Issues
+## Test Case Issues
 
+* consider testing for malloc/realloc failures (see `ckmame/regress/malloc.c`)
+* Winzip AES support
+  * test cases decryption: <=20, >20, stat for both
+  * test cases encryption: no password, default password, file-specific password, 128/192/256, <=20, >20
+  * support testing on macOS
 * add test cases for lots of files (including too many)
 * add test cases for holes (between files, between files and cdir, between cdir and eocd, + zip64 where appropriate)
 * unchange on added file
@@ -154,7 +198,7 @@
   * zip_open_from_source
 * read two zip entries interleaved
 
-# Unsorted
+## Unsorted
 
 * `zip_source_file()`: don't allow write if start/len specify a part of the file
 * script to check if all exported symbols are marked with `ZIP_EXTERN`, add to make distcheck