more work on implementation