majority of profile logic structured as class