lint checks mostly pass