[dev] optional with sub types