hardware dependency code seperated