finish documentation and make __repr__