partial complete, lots of hard coding so pushing