working .. just needs polishing