make things more generic