still not got the recrusive toString to work properly