analysis stuff
abstract stuff