Reworked Component Sets for better type checking.
Null return from function means don't add it to entity.
Added some comments.