might consider taking non-list arguments for itypes and otypes.