general overhaul + simple test