basic canvas framework