updated with rust support