initial; converting to rust
merged