further cleaned functions