refactoring interface in a big way. still no passability, no typing, some other missing features