imporved add/edit interface, set default values, used finish()