implementing feature functions WIP