adding separate checks for functionality and compatibility