cleaned up for CPAN