Cleaned up approach function