// more robust