current working version, has special needs though.