added support for custom extractDefines and extractRequires as functions...

...;

refactored some methods to break down the steps better;