tidied up the interface