less error-prone implementation