fst draft done. not tested