features logic extracted, add-and-sub feature done