use partial instead of cycle hack