changed everything to interface