more versatile list method