refactor canopsis APP