using enummap instead enum