split up into 2 classes