Add some caching
Move changed method
Load requirements and defaults from schema

closes #26
fixes #23
closes #19