now uses a map instead of a vector for line numbers