implement part of library