organized into lib and app