each kind of implementation has advantages and disadvantages