changed core from observable to using a custom controller interface