]> git.openstreetmap.org Git - nominatim.git/log
nominatim.git
12 years agoAdd options to output polygon in various formats: polygon_geojson=1&polygon_svg=1...
Brian Quinion [Tue, 6 Nov 2012 00:08:01 +0000 (00:08 +0000)]
Add options to output polygon in various formats: polygon_geojson=1&polygon_svg=1&polygon_kml=1&polygon_text=1 They can be all used at the same time if prefered.  Where format and polygon type are compatible output is as native type e.g. format=json&polygon_geojson=1

12 years agoHandle multipolygon geometry a little bit (return first outer ring)
Brian Quinion [Mon, 5 Nov 2012 22:47:42 +0000 (22:47 +0000)]
Handle multipolygon geometry a little bit (return first outer ring)

12 years agoremove accidentally committed exit command
Brian Quinion [Mon, 5 Nov 2012 14:04:14 +0000 (14:04 +0000)]
remove accidentally committed exit command

12 years agoinclude a bit of extra details for polygon errors in output on details.php page
Brian Quinion [Mon, 5 Nov 2012 14:00:54 +0000 (14:00 +0000)]
include a bit of extra details for polygon errors in output on details.php page

12 years agodon't include linked_place_id places in the sql output (causes errors on paging ...
Brian Quinion [Mon, 5 Nov 2012 13:57:02 +0000 (13:57 +0000)]
don't include linked_place_id places in the sql output (causes errors on paging / number of results returned)

12 years agoAllow option of structured search queries (params amenity,street,city,county,state...
Brian Quinion [Fri, 2 Nov 2012 17:52:33 +0000 (17:52 +0000)]
Allow option of structured search queries (params amenity,street,city,county,state,country)

12 years agofix some php warnings for cleaner output
Brian Quinion [Fri, 2 Nov 2012 17:42:05 +0000 (17:42 +0000)]
fix some php warnings for cleaner output

12 years agohstore in 9.2 replaces k=>v with hstore(k,v). Update sql to reflect change and intro...
Brian Quinion [Thu, 1 Nov 2012 01:47:30 +0000 (01:47 +0000)]
hstore in 9.2 replaces k=>v with hstore(k,v).  Update sql to reflect change and introduce compatability function for pre 9.1 postgresql

12 years agohstore in 9.2 replaces k=>v with hstore(k,v). Update sql to reflect change and intro...
Brian Quinion [Thu, 1 Nov 2012 01:46:19 +0000 (01:46 +0000)]
hstore in 9.2 replaces k=>v with hstore(k,v).  Update sql to reflect change and introduce compatability function for pre 9.1 postgresql

12 years agonew development version 2.1
Brian Quinion [Wed, 31 Oct 2012 16:26:15 +0000 (16:26 +0000)]
new development version 2.1

12 years agodon't exit during osmosis setup
Brian Quinion [Mon, 29 Oct 2012 14:23:05 +0000 (14:23 +0000)]
don't exit during osmosis setup

12 years agoAutomatically calculate the state file for replication from the last node in the db
Brian Quinion [Mon, 22 Oct 2012 02:09:38 +0000 (03:09 +0100)]
Automatically calculate the state file for replication from the last node in the db

12 years agocorrect penalty for multi-word countries
Sarah Hoffmann [Sun, 14 Oct 2012 14:09:12 +0000 (16:09 +0200)]
correct penalty for multi-word countries

Country name needs to be the final one within the wordset, not
in the final of all wordsets.

12 years agoimport time uses UTC
Sarah Hoffmann [Sat, 13 Oct 2012 07:06:26 +0000 (09:06 +0200)]
import time uses UTC

12 years agouse geometry column for special phrase queries
Sarah Hoffmann [Tue, 9 Oct 2012 21:57:54 +0000 (23:57 +0200)]
use geometry column for special phrase queries

It has an index, centroid does not.

12 years agotypo
Sarah Hoffmann [Tue, 9 Oct 2012 20:20:05 +0000 (22:20 +0200)]
typo

12 years agouse calculated_country_code for postcodes
Sarah Hoffmann [Tue, 9 Oct 2012 20:05:37 +0000 (22:05 +0200)]
use calculated_country_code for postcodes

12 years agoremove country name from address name vector
Sarah Hoffmann [Sun, 7 Oct 2012 22:05:23 +0000 (00:05 +0200)]
remove country name from address name vector

Country is already covered by the country_name entries in the
word table, so removing the country from the address vector will
not change results but reduce the size of search_name significantly.

Patch in names from OSM into the word table
to make sure we have complete coverage. Note that bad entries
still need to be removed by hand.

12 years agoupdate to latests osm2pgsql
Sarah Hoffmann [Tue, 2 Oct 2012 20:52:38 +0000 (22:52 +0200)]
update to latests osm2pgsql

12 years agodelete more hardcoded rules for special phrases
Sarah Hoffmann [Sun, 30 Sep 2012 09:46:00 +0000 (11:46 +0200)]
delete more hardcoded rules for special phrases

both cases are now sufficiently covered by settings/phrase_settings.php

12 years agolift restriction on special search term class
Sarah Hoffmann [Sun, 30 Sep 2012 08:40:44 +0000 (10:40 +0200)]
lift restriction on special search term class

All too frequent classes are already filtered out on import of the
special search term tables.

12 years agoMerge remote-tracking branch 'lonvia/partial-search-terms'
Sarah Hoffmann [Sun, 30 Sep 2012 07:51:54 +0000 (09:51 +0200)]
Merge remote-tracking branch 'lonvia/partial-search-terms'

12 years agoupdate osm2pgsql to latest version
Sarah Hoffmann [Sat, 29 Sep 2012 16:53:21 +0000 (18:53 +0200)]
update osm2pgsql to latest version

12 years agoremove mountain ranges from addresses
Sarah Hoffmann [Sat, 29 Sep 2012 16:25:22 +0000 (18:25 +0200)]
remove mountain ranges from addresses

12 years agoskip is_in items already in address vector
Sarah Hoffmann [Sat, 29 Sep 2012 16:02:32 +0000 (18:02 +0200)]
skip is_in items already in address vector

12 years agocheck for empty relation before linking
Sarah Hoffmann [Fri, 28 Sep 2012 20:58:29 +0000 (22:58 +0200)]
check for empty relation before linking

Empty relations may indeed appear, if the members of a relation
have been deleted but the tags have been retained. That is
detected as accidental error and the old geometry is retained
in placex while the slim tables contain the new version without members.

12 years agoignore frequent partial search terms
Sarah Hoffmann [Mon, 24 Sep 2012 22:36:34 +0000 (00:36 +0200)]
ignore frequent partial search terms

Adds word counts from a full planet to the word table. There is a
new configuration option CONST_Max_Word_Frequency which allows to
take into account the word count: the value that was set on import
is used to determine if a word is added to the search_name table.
The value during runtime determines if a single term should be
used for partial search or simply be ignored.

12 years agouse rank_address for linking places and boundaries
Sarah Hoffmann [Mon, 24 Sep 2012 18:32:43 +0000 (20:32 +0200)]
use rank_address for linking places and boundaries

This manages to match up a lot more places and boundaries below city level.

12 years agopatch replication path on --osmosis-init
Sarah Hoffmann [Sun, 23 Sep 2012 20:03:28 +0000 (22:03 +0200)]
patch replication path on --osmosis-init

planet server layout has changed. Patch in the new path to
minute replications after having osmosis initialise configuration.txt.

12 years agoswitch to distribution-supplied osmosis
Sarah Hoffmann [Sun, 23 Sep 2012 19:44:03 +0000 (21:44 +0200)]
switch to distribution-supplied osmosis

Both, Debian and Ubuntu now come with a reasonably recent version
of osmosis. Make using that the default.

12 years agofix edge cases when linking nodes
Sarah Hoffmann [Sun, 23 Sep 2012 16:06:41 +0000 (18:06 +0200)]
fix edge cases when linking nodes

edge cases are: missing node in placex, empty name, empty extratags

12 years agoswitch attributions to ODbL
Sarah Hoffmann [Wed, 12 Sep 2012 17:14:28 +0000 (19:14 +0200)]
switch attributions to ODbL

12 years agodefered delete should be done even if the place is otherwise blocked
Brian Quinion [Mon, 3 Sep 2012 13:52:49 +0000 (14:52 +0100)]
defered delete should be done even if the place is otherwise blocked

12 years agorevert attempt to fix house number re-indexing on update, far too slow
Brian Quinion [Fri, 31 Aug 2012 11:21:07 +0000 (12:21 +0100)]
revert attempt to fix house number re-indexing on update, far too slow

12 years agolimit reindexing to buildings / addresses
Brian Quinion [Wed, 29 Aug 2012 10:33:33 +0000 (11:33 +0100)]
limit reindexing to buildings / addresses

12 years agomark placex as needed re-indexin based on parent_place_id too
Brian Quinion [Tue, 28 Aug 2012 18:05:01 +0000 (19:05 +0100)]
mark placex as needed re-indexin based on parent_place_id too

12 years agoMerge branch 'master' of github.com:twain47/Nominatim
Brian Quinion [Tue, 28 Aug 2012 17:42:06 +0000 (18:42 +0100)]
Merge branch 'master' of github.com:twain47/Nominatim

12 years agolinked places not being updated on road modification
Brian Quinion [Tue, 28 Aug 2012 17:41:02 +0000 (18:41 +0100)]
linked places not being updated on road modification

12 years agofix format error in polygon output
Sarah Hoffmann [Mon, 27 Aug 2012 21:17:17 +0000 (23:17 +0200)]
fix format error in polygon output

12 years agoreduce effect of missing world now importance is better quality
Brian Quinion [Sat, 25 Aug 2012 19:05:05 +0000 (20:05 +0100)]
reduce effect of missing world now importance is better quality

12 years agomake setup.php fail early on missing osm-file
sprengm [Fri, 24 Aug 2012 15:55:19 +0000 (17:55 +0200)]
make setup.php fail early on missing osm-file

make setup.php fail early if:
  - no osm-file argument was supplied for --all or --import-data
  - the supplied osm-file is not existing or not readable (file permissions)

12 years agofix 500 on search for bounded and class query terms
Sarah Hoffmann [Fri, 24 Aug 2012 23:09:52 +0000 (01:09 +0200)]
fix 500 on search for bounded and class query terms

Ignore bounded=1 if no viewbox parameter was given.

New centroid column in placex makes it necessary to name the table
when joining with classtype tables.

12 years agoavoid reassigning address rank of place itself
Sarah Hoffmann [Mon, 20 Aug 2012 21:33:35 +0000 (23:33 +0200)]
avoid reassigning address rank of place itself

12 years agofix permissions of gb_postcode table
Sarah Hoffmann [Sun, 19 Aug 2012 21:51:31 +0000 (23:51 +0200)]
fix permissions of gb_postcode table

12 years agomake sure first of each address rank is used
Sarah Hoffmann [Sun, 19 Aug 2012 21:08:51 +0000 (23:08 +0200)]
make sure first of each address rank is used

get_addressdata should not really return duplicates but if there are
the first result will be the best one, so make sure that one is used

12 years agoimport TIGER data into temporary table
Sarah Hoffmann [Sat, 18 Aug 2012 08:22:35 +0000 (10:22 +0200)]
import TIGER data into temporary table

Import TIGER data into a temporary table first that later replaces
the current location_property_tiger table. This way index creation
on the table can be delayed until after the import which should
speed up the import and result in significantly smaller indexes.

Also removed index on parent_place_id as it is covered by
idx_location_property_tiger_housenumber_parent_place_id.

12 years agogitignore dynamically created files
Sarah Hoffmann [Sat, 18 Aug 2012 08:20:46 +0000 (10:20 +0200)]
gitignore dynamically created files

12 years agoplaces that cannot be part of an address still should get an address themselves
Sarah Hoffmann [Tue, 31 Jul 2012 06:27:59 +0000 (08:27 +0200)]
places that cannot be part of an address still should get an address themselves

12 years agodon't create index idx_placex_sector twice
Sarah Hoffmann [Mon, 30 Jul 2012 22:42:55 +0000 (00:42 +0200)]
don't create index idx_placex_sector twice

12 years agofail on error
Sarah Hoffmann [Mon, 30 Jul 2012 22:31:38 +0000 (00:31 +0200)]
fail on error

- stop indexing if there is any other error than deadlock from the DB
- stop import if osm2pgsql or indexing fails

12 years agosend place_rank in jsonv2 format
Sarah Hoffmann [Mon, 23 Jul 2012 21:34:13 +0000 (23:34 +0200)]
send place_rank in jsonv2 format

12 years agoMerge branch 'patch-1' of https://github.com/Firefishy/Nominatim
Sarah Hoffmann [Sun, 22 Jul 2012 07:02:55 +0000 (09:02 +0200)]
Merge branch 'patch-1' of https://github.com/Firefishy/Nominatim

12 years agoFix repeating lat twice in span instead of lat, lon.
Grant [Sun, 22 Jul 2012 02:45:45 +0000 (04:45 +0200)]
Fix repeating lat twice in span instead of lat, lon.

12 years agoMerge remote-tracking branch 'lonvia/address-order'
Sarah Hoffmann [Fri, 20 Jul 2012 22:53:53 +0000 (00:53 +0200)]
Merge remote-tracking branch 'lonvia/address-order'

12 years agoadapt distance heuristics for nodes
Sarah Hoffmann [Fri, 20 Jul 2012 22:41:18 +0000 (00:41 +0200)]
adapt distance heuristics for nodes

Include only those nodes that are closer than 1.5 times the distance
of the closest feature of the same address rank.

12 years agogracefully fail if nodes from an address interpolation are missing
Sarah Hoffmann [Fri, 13 Jul 2012 20:33:09 +0000 (22:33 +0200)]
gracefully fail if nodes from an address interpolation are missing

12 years agoFix more typos
Daniele Forsi [Tue, 10 Jul 2012 13:36:17 +0000 (15:36 +0200)]
Fix more typos

12 years agoFix typos found with codespell in comments
Daniele Forsi [Tue, 10 Jul 2012 13:31:01 +0000 (15:31 +0200)]
Fix typos found with codespell in comments

12 years agoFix typos in function name
Daniele Forsi [Mon, 9 Jul 2012 17:07:09 +0000 (19:07 +0200)]
Fix typos in function name

perl -p -e s/getPrefferedLangauges/getPreferredLanguages/ -i */*.php

12 years agoFix wrong variable used with PEAR::IsError()
Daniele Forsi [Mon, 9 Jul 2012 16:16:54 +0000 (18:16 +0200)]
Fix wrong variable used with PEAR::IsError()

Fixes:
PHP Fatal error:  Cannot use object of type DB_Error as array in /home/daniele/Programmazione/OSM/Nominatim/website/reverse.php on line 104

12 years agoexcluded place nodes outside parent boundaries from addresses
Sarah Hoffmann [Tue, 3 Jul 2012 20:44:06 +0000 (22:44 +0200)]
excluded place nodes outside parent boundaries from addresses

Changes slightly the logic which decides if a guessed places
(i.e. a place node) is included in an address: it will be
part of the address only if it is inside the next lower
available boundary. This fixes problematic cases where
neighbouring entities have additional admin levels.

12 years agoput libraries in right place when linking
Sarah Hoffmann [Tue, 3 Jul 2012 13:09:00 +0000 (16:09 +0300)]
put libraries in right place when linking

12 years agouse json_encode in search stuff as well
Sarah Hoffmann [Sun, 1 Jul 2012 15:24:27 +0000 (17:24 +0200)]
use json_encode in search stuff as well

remove JSON_UNESCAPED_UNICODE, supported only by php >=5.3.3 and
clients should be able to handle the escaping

12 years agomore generalized javascript_renderData
Sarah Hoffmann [Sun, 1 Jul 2012 11:19:59 +0000 (13:19 +0200)]
more generalized javascript_renderData

- handles json/jsonp transparently (avoiding code duplication in templates)
- use php's internal json_encode functions (with JSON_UNESCAPED_UNICODE
  for backward compatibility)
- be more liberal with what is allowed as a callback identifier
- return a 400 for illegal callbacks
- return application/javascript type when jsonp is requested

fixes #16, fixes #17

12 years agomake sure invalid geometries are always deleted from place
Sarah Hoffmann [Fri, 29 Jun 2012 20:11:40 +0000 (22:11 +0200)]
make sure invalid geometries are always deleted from place

This solves a bug with updating large invalid geometries. These
geometries have an entry in place but not in placex. Thus, place_insert
tries to delete the place entry and reinsert it on update. Deletion would
fail because self-intersecting polygons still have an area and large
areas are not deleted.

12 years agobe less verbose
Sarah Hoffmann [Thu, 28 Jun 2012 20:09:44 +0000 (22:09 +0200)]
be less verbose

12 years agoignore railways, tunnels and bridges when reverse geocoding
Sarah Hoffmann [Thu, 28 Jun 2012 18:39:18 +0000 (20:39 +0200)]
ignore railways, tunnels and bridges when reverse geocoding

12 years agoMerge branch 'configure' of github.com:lonvia/Nominatim
Sarah Hoffmann [Wed, 27 Jun 2012 20:55:39 +0000 (22:55 +0200)]
Merge branch 'configure' of github.com:lonvia/Nominatim

12 years agoadd README stuff
Sarah Hoffmann [Wed, 27 Jun 2012 19:40:58 +0000 (21:40 +0200)]
add README stuff

12 years agoadd git commit version if applicable
Sarah Hoffmann [Tue, 26 Jun 2012 20:55:08 +0000 (22:55 +0200)]
add git commit version if applicable

12 years agoremove duplicate check for ZLIB
Sarah Hoffmann [Tue, 26 Jun 2012 20:19:04 +0000 (22:19 +0200)]
remove duplicate check for ZLIB

12 years agobe more strict with us state replacement hack
Sarah Hoffmann [Mon, 25 Jun 2012 06:46:14 +0000 (08:46 +0200)]
be more strict with us state replacement hack

replace il/al/la only if they are properly separated by a comma

12 years agoyet another autogenerated file removed
Sarah Hoffmann [Fri, 15 Jun 2012 23:38:27 +0000 (01:38 +0200)]
yet another autogenerated file removed

12 years agoremove autogenerated files
Sarah Hoffmann [Fri, 15 Jun 2012 23:36:13 +0000 (01:36 +0200)]
remove autogenerated files

12 years agocreate a globale configure/make
Sarah Hoffmann [Fri, 15 Jun 2012 23:25:16 +0000 (01:25 +0200)]
create a globale configure/make

- move the configure from nominatim out and add checks for all dependencies
- bring module under automake control
- add osm2pgsql as a submodule, configure and build with the others

12 years agosilently remove leading/trailing spaces
Sarah Hoffmann [Wed, 30 May 2012 20:19:49 +0000 (22:19 +0200)]
silently remove leading/trailing spaces

12 years agoavoid PHP notices
Sarah Hoffmann [Fri, 25 May 2012 21:45:59 +0000 (23:45 +0200)]
avoid PHP notices

12 years agoremove distinct, causes nearest feature results to be badly reordered
Sarah Hoffmann [Thu, 24 May 2012 20:47:34 +0000 (22:47 +0200)]
remove distinct, causes nearest feature results to be badly reordered

12 years agoUpdated reverse geocoding to improve handling of zoom=0
Brian Quinion [Thu, 24 May 2012 15:54:51 +0000 (16:54 +0100)]
Updated reverse geocoding to improve handling of zoom=0

12 years agoMerge branch 'master' of github.com:twain47/Nominatim
Brian Quinion [Wed, 23 May 2012 23:43:23 +0000 (01:43 +0200)]
Merge branch 'master' of github.com:twain47/Nominatim

12 years agotruncate road partition tables during load
Brian Quinion [Wed, 23 May 2012 23:42:59 +0000 (01:42 +0200)]
truncate road partition tables during load

12 years agomore verbose error messages
Sarah Hoffmann [Wed, 23 May 2012 22:26:16 +0000 (00:26 +0200)]
more verbose error messages

12 years agorename ambiguous variables to make postgresql 8.4 happy
Sarah Hoffmann [Wed, 23 May 2012 22:25:15 +0000 (00:25 +0200)]
rename ambiguous variables to make postgresql 8.4 happy

12 years agouse Overpass API by default to download OSM objects
Sarah Hoffmann [Tue, 22 May 2012 20:23:46 +0000 (22:23 +0200)]
use Overpass API by default to download OSM objects

12 years agomake index work and remove more hard-coded DB names
Sarah Hoffmann [Tue, 22 May 2012 19:05:31 +0000 (21:05 +0200)]
make index work and remove more hard-coded DB names

12 years agoeliminate php warning, remove setting aPipes (isn't used)
Datendelphin [Sat, 5 May 2012 08:56:31 +0000 (10:56 +0200)]
eliminate php warning, remove setting aPipes (isn't used)

12 years agomake .osc files with osmosis
Datendelphin [Fri, 20 Apr 2012 16:29:14 +0000 (18:29 +0200)]
make .osc files with osmosis

12 years agoMerge branch 'master' of github.com:twain47/Nominatim
Brian Quinion [Wed, 23 May 2012 17:26:01 +0000 (19:26 +0200)]
Merge branch 'master' of github.com:twain47/Nominatim

12 years agorevert to plain text dump for 8.4 compatibility (+ permissions fix)
Brian Quinion [Wed, 23 May 2012 17:25:43 +0000 (19:25 +0200)]
revert to plain text dump for 8.4 compatibility (+ permissions fix)

12 years agotypo
Sarah Hoffmann [Wed, 23 May 2012 17:15:15 +0000 (20:15 +0300)]
typo

12 years agocan't have a unique index on placex - only on place
Brian Quinion [Tue, 22 May 2012 18:25:18 +0000 (20:25 +0200)]
can't have a unique index on placex - only on place

12 years agofix broken field name / committed debug
Brian Quinion [Tue, 22 May 2012 18:21:58 +0000 (20:21 +0200)]
fix broken field name / committed debug

12 years agouse the new country data files
Brian Quinion [Tue, 22 May 2012 17:48:35 +0000 (19:48 +0200)]
use the new country data files

12 years agodeal with some indexing edge cases
Brian Quinion [Tue, 22 May 2012 17:43:49 +0000 (19:43 +0200)]
deal with some indexing edge cases

12 years agoMerge pull request #9 from andreek/master
Brian Quinion [Tue, 22 May 2012 17:34:04 +0000 (10:34 -0700)]
Merge pull request #9 from andreek/master

Postgis 2.0 compatibility
Seems to be compatible with all recent versions of postgis

12 years agoDB Scheme changes: alter table placex add column calculated_country_code varchar(2);
Brian Quinion [Tue, 22 May 2012 14:27:42 +0000 (16:27 +0200)]
DB Scheme changes: alter table placex add column calculated_country_code varchar(2);

function changes:
-----------------
Move to ST_PointOnSurface from ST_Centroid in various places to avoid looking up a point outside the polygon
Move to ST_Covers from ST_Contains to include points on admin boundaries
Re-order preference for get_country_code now our data is better. country_osm_grid is now the preffered source.
Fix code to calculate country code in placex_insert, rank_search test was too early
Add extra field to placex 'calculated_country_code' to improve structure of code
Move split_geometery function out of add_location into its own function
Rewrite split_geometery to be more efficient.
Change place_insert to do more updates and less delete/inserts (delete is slow)
Include wikipedia links in details.php ouput
Cleanup no longer used geometry validation (adding overhead)
Include debug statements in function.sql (--DEBUG: ) and add flag to setup.php to turn them on

setup.php:
----------
add flag --disable-token-precalc to speed up debuging
add flag --index-noanalyse to disable analysising DB at rank 4 and 26 (previously removed, but on my local DB it seems to be required)
add flag --enable-diff-updates (modifier to --create-functions) to turn on the code required for diff updates without having to modify functions.sql
add flag --enable-debug-statements (modifier to --create-functions) to turn on debug warning statements

update.php:
-----------
added flag --no-index to import osmosis changes without indexing them
extend the hack to allow import of JOSM generated osm files

country_grid.sql - reference copy of the sql used to generate the country_osm_grid table, needs cleanup

12 years agoSuport postgis 2.0 for search
Andree Klattenhoff [Tue, 22 May 2012 12:04:37 +0000 (14:04 +0200)]
Suport postgis 2.0 for search

12 years agoMerge branch 'master' of github.com:twain47/Nominatim
Brian Quinion [Tue, 15 May 2012 01:06:12 +0000 (03:06 +0200)]
Merge branch 'master' of github.com:twain47/Nominatim

12 years agomove index over nameaddress_vector back to delayed index creation
Sarah Hoffmann [Sun, 13 May 2012 09:38:50 +0000 (11:38 +0200)]
move index over nameaddress_vector back to delayed index creation

No longer needed for linking places.

12 years agoremove intermediate ANALYSE while indexing
Sarah Hoffmann [Sun, 13 May 2012 08:50:08 +0000 (10:50 +0200)]
remove intermediate ANALYSE while indexing

Autovacuum does a much better job.