delegates, generic parameters, bug fixes, and better organization