Add core and base logic