still a mess...pointer and interface issues