major overhaul
minor cleanup