Enhancements

Second version with enhancements as per requirements doc.