based on beangle 4.0.4