Rework to use a Context
Now detecting duplicate items
Implement a few more things
Implement more expressions
Update for rustc