final functionality cuts to modernise lib