abstract path