separate high level and low level methods for contacts