major rework

Change-Id: I84e2e38f3a1b074a7aa7e315489fc5dcf9210c6a
major rework

Change-Id: Ie7373f5fa538199584148e5ee7767b4ed3b8a25b