added pinhole model