Initial commit with core domain classes