further work on implementation