implemented less structure