First working version that should have all the
basic properties.