Towards polynomial time algorithms for matrix groups