Refactored to be used as a standalone app with separate project directories