added directory and engine abstractions