First pass

Has issues with having a factory that requires input