major overhaul for interface