Add contact plus a bit of refactoring