all functions working fully