- initial implementation, full of issues but works OK!