implemened all calls, should work, needs tidying up