First complete version
Ignoring:
Test cases
tostrings