Refactor geometry type delegate