Initial commit with main abstractions