functional with proper coloring, hover and highlight