port som logic to traits