Design and implementations