merged Core to KMM. please make sure to keep core independant from GUI