Lint
Remove redundant cruft
Abstraction layer
Add documentation