re-named, re-organized, and added a few utility classes