add exclude option
major reorg/cleanup
fix all tests