improve, add matrix module