should this rather be a common interface? is there any other way to accomplish this?