redefined the interface
docs and read me