add abide function