core: handle more value types and more interactions