add gesture and smooth animation