ordered map
stupid jslint fix
additional functionality and tests