add optional custom output
cleanup