completed (final ver.1)