Most fingerprint matching algorithms are based on minutiae features in a fingerprint image. The performance of an automatic fingerprint verification system depends largely on the performance of the minutiae extraction algorithm. Due to artifacts introduced during binarizing and thinning stages in a typical minutiae extraction algorithm, several extraneous minutiae are detected. Current extraction algorithms use ad-hoc techniques to prune these extraneous minutiae. In this paper we introduce a minutiae verification technique which verifies each detected minutia by examining its gray scale neighborhood. The minutiae verification improves the performance of the overall system by 4-5%. The proposed minutiae verification will replace the minutiae pruning stage in a typical fingerprint verification system. Several researchers do not use minutiae type information in the matching stage. We have shown that the performance of a verification system can be improved about 3-4% with a simple classification of minutiae into two classes: ridge ending and ridge bifurcation. Further, we show that combining both the classification and verification can significantly improve the performance of a state-of-the-art fingerprint verification system.