refactored and added version with join