add work with map(not tested)