Added validation methods.
Convert injectors into classes.
Cleaned up style and naming.