Major rework, use our own custom entity.