more work on new implementation