split into appframework and core