allow all datatypes

-f binary is capable of producing meaningful output
various cleanups, code merging