implemented most important interfaces