less hard code