interface mostly
merged