Tweaked to not use horrible `implements`