Better version, even though yuck helper methods