bunch more things and tests