geometry functions always inline