method implement