refactorize to use more reasonable names