basic implementation boilerplate