updated with some interface changes