migrating larger functionality over to core