moved geo behaviour to the app layer