Added generics
Added properties
Fixed a return value bug
Removed a debug comment