Back to a somewhat working state, now supporting general data decls