teakF :: [Slice Int] -> Chan -> [Chan] -> MkPNMonad SimFlow SimValue ()
    teakF outSlices ((inpR, inpA), _) out = withLabel "F" $ do
        withLabel "r" $ newTrans [inpR] outR (map (\slice -> pnBitfield slice (PNInput 0)) outSlices)
        withLabel "a" $ newTrans outA [inpA] [PNLiteral token]
        return ()
        where
            (_, outActive) = unzip out
            (outR, outA) = unzip outActive
teakF :: [Slice Int] -> Chan -> [Chan] -> MkPNMonad SimFlow SimValue ()
teakF outSlices ((inpR, inpA), _) out = withLabel "F" $ do
        withLabel "r" $ newTrans [inpR] outR (map (\slice -> pnBitfield slice (PNInput 0)) outSlices)
        withLabel "a" $ newTrans outA [inpA] [PNLiteral token]
        return ()
        where
            (_, outActive) = unzip out
            (outR, outA) = unzip outActive
teakF outSlices ((inpR, inpA), _) out = withLabel "F" $ do
        withLabel "r" $ newTrans [inpR] outR (map (\slice -> pnBitfield slice (PNInput 0)) outSlices)
        withLabel "a" $ newTrans outA [inpA] [PNLiteral token]
        return ()
        where
            (_, outActive) = unzip out
            (outR, outA) = unzip outActive