implement builder class