generation of map decoupled from model