some design implementation