delegateとか細かいところを実装した