added path dependent types and scalaz utils