mostly functions work