just change the function names for better readability
new version