Cleaner way of writing functions for multiple types

related discussion,, may be relevant: