Separated core from experimental implementation