* better use of generics
* fix @since