slight modifiactions