revisit includes
* replace some with forward decls
* enforce include squence
* add missing api decls
add missing include