less hardcode is better