now fully using semantic gs