Refactors Feature and Datasource to be proper classes and have their own decorators for processing functions.