cleanup: avoid from()