implement into a single class