final version TAP