lots of changes to interface