Pass by value.
Make data private.
Add regular type check.
Merge branch 'feature/args' into develop