cleaned up abstract definitions in core for later use