(^) minor adjustments
(*) type handling redesign
(^) type handling redesign