Add new implementation (simpler, less error-prone)