followed pythonic conventions