Add core components + tests