has to fulfil ()